CentOS 7 离线安装MySQL

MySQL下载官网:
https://downloads.mysql.com/archives/community/
文章使用的MySQL版本下载地址:
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
CentOS 7 离线安装MySQL_第1张图片

一、卸载旧的mysql

1、删除MySQL的安装文件

[root@www ~]# find / -name mysql
/usr/local/env/mysql
/usr/local/env/mysql/mysql
/usr/local/env/mysql/mysql/bin/mysql
/usr/local/env/mysql/mysql/data/mysql
rm -rf /usr/local/env/mysql # 删除

2、删除MySQL的配置文件

rm -rf /etc/my.cnf
# 删除 /etc/init.d/ 下跟MySQL有关的服务,包括mysql、mysqld文件
rm -rf /etc/init.d/mysql
rm -rf /etc/init.d/mysqld

3、删除MySQL用户和用户组

[root@www ~]# userdel mysql
userdel: user 'mysql' does not exist

到此,卸载完成!

二、安装mysql

1、上传安装包

cd /usr/local/
tar -zxvf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.41-linux-glibc2.12-x86_64 mysql
cd mysql

2、添加用户组mysql和用户mysql,并将其添加到mysql用户组中

groupadd mysql
useradd -r -g mysql mysql

useradd -r 参数表示mysql用户是系统用户,不可用于登录系统。
useradd -g 参数表示把mysql用户添加到mysql用户组中。

3、检查是否安装了 libaio

rpm -qa | grep libaio
如果没有的话,使用下面命令安装
yum install libaio

4、配置 my.cnf 文件

touch /etc/my.cnf
chmod +x /etc/my.cnf

vim /etc/my.cnf,添加以下内容:

[mysqld]
port=3306
 
# 安装目录
basedir=/usr/local/mysql
# 数据存放目录
datadir=/usr/local/mysql/data
 
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
 
# 允许最大连接数
max_connections=200
 
# 服务端使用的字符集
character-set-server=utf8
collation-server=utf8_general_ci

# 解决group by问题
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 表名忽略大小写
lower_case_table_names=1

[client]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid

5、创建mysql、data、logs文件夹

mkdir /usr/local/mysql/data
mkdir -p /var/log/mysql
mkdir -p /var/lib/mysql
touch /var/log/mysql/error.log

6、将mysql目录的所属用户和组改为mysql

chown -R mysql:mysql /usr/local/mysql

7、初始化 mysqld 生成初始化密码

cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

报错解决:
初始化数据库时报错:

./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
# 需安装 libnuma.so.1,因为装的mysql是64位的,包也需要64位的
yum -y install numactl.x86_64

此时,控制台打印如下:
CentOS 7 离线安装MySQL_第2张图片最后: i;lknXwO;5,s 就是初始化之后的密码。
也可以通过命令查找:

grep password  /var/log/mysqld.log

或者修改配置文件 vim /etc/my.cnf ,给 mysqld 项增加 skip-grant-tables 跳过登录验证

[mysqld]
skip-grant-tables

然后启动mysql,不用输入密码,直接回车就能登录

三、mysql设置开机启动

cd /usr/local/mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld

修改 mysqld 文件,在 $bindir/mysqld_safe 后面加上 --user=mysql

vim /etc/rc.d/init.d/mysqld

在这里插入图片描述
将 mysqld 服务加入到系统服务

chkconfig --add mysqld
chkconfig mysqld on  # 设置开机自启
service mysqld start  # 启动mysql

住意:因为 mysqld 不是本地服务,是我们后加的,所以想要设置开机启动务不能用 systemctl enable mysqld ,systemctl 命令只能操作正常安装在系统的本地服务,所以要通过 chkconfig 命令来实现开机启动。

四、修改mysql密码

1、使用初始化的密码,首次登录

mysql -uroot -p
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
# 解决办法
alter user 'root'@'localhost' identified by '123456';
# 允许远程访问
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

报错解决

mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

查询 mysql.sock 路径,做一个软链接到 /tmp 目录下即可解决

find / -name mysql.sock
输出: /var/lib/mysql/mysql.sock
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

五、配置环境变量

1、打开 /etc/profile 配置文件,添加以下内容:

# mysql环境变量
export PATH=$PATH:/usr/local/mysql/bin

2、执行命令,使其生效

source /etc/profile
echo $PATH  # 校验是否成功

出现了 /usr/local/mysql/bin 表示已经配置成功。

你可能感兴趣的:(mysql,centos,linux)