Centos6 安装 MySQL 5.7

561 阅读4分钟

参考文章地址:blog.51cto.com/laobaiv1/19…

下载

下载地址: downloads.mysql.com/archives/co…
我们选择社区版下载,下载完后上传至服务器,也可以直接在服务器上下载。

解压

在目录下执行解压命令。

tar -xvf mysql-5.7.29-linux-glibc2.12-x86_64.tar

得到以下以下两个文件。

mysql-test-5.7.29-linux-glibc2.12-x86_64.tar.gz
mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

我们继续解压 mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz。

tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

得到 mysql-5.7.29-linux-glibc2.12-x86_64 文件夹

mysql-5.7.29-linux-glibc2.12-x86_64

目录创建

我们将路径规划如下:

# 数据目录
datadir = /data/mysql
# 应用目录
basedir = /var/lib/mysql
# 错误日志路径
log-error = /data/logs/mysql/error.log

将解压好的mysql应用移动至 /var/lib/

# 移动
mv mysql-5.7.29-linux-glibc2.12-x86_64 /var/lib/
# 重命名
mv /var/lib/mysql-5.7.29-linux-glibc2.12-x86_64/ /var/lib/mysql

创建数据目录以及日志文件

mkdir -p /data/mysql
mkdir -p /data/logs/mysql

给予权限

chown mysql:mysql -R /var/lib/mysql/
chown mysql:mysql -R /data/mysql/
chown mysql:mysql -R /data/logs/mysql/
chmod 750 -R /var/lib/mysql/
chmod 750 -R /data/mysql/
chmod 750 -R /data/logs/mysql/

运行文件以及配置文件

编辑 /var/lib/mysql/support-files/mysql.server 文件,将 datadir 以及 basedir 修改成对应路径

vi /var/lib/mysql/support-files/mysql.server
basedir=/var/lib/mysql
datadir=/data/mysql

编辑配置文件 /etc/my.cnf

vi /etc/my.cnf

配置参考如下

################## MySQL客户端配置 ##################
[client]
port = 3306
# MySQL客户端默认端口号

socket = /data/mysql/mysql.sock
# 用于本地连接的Unix套接字文件存放路径

default-character-set = utf8mb4
# MySQL客户端默认字符集

################## MySQL命令行配置 ##################
[mysql]
auto-rehash
# 开启tab补齐功能

socket = /data/mysql/mysql.sock
# 用于本地连接的Unix套接字文件存放路径

default-character-set = utf8mb4
# MySQL客户端默认字符集

max_allowed_packet = 256M
# 指定在网络传输中一次消息传输量的最大值。系统默认值 为1MB,最大值是1GB,必须设置1024的倍数。

################## MySQL服务端配置 ##################
[mysqld]

######## Logs ########
log_timestamps=SYSTEM
# 日志时间格式跟随系统

log-error = /data/logs/mysql/error.log
# 错误日志路径

######## General ########
port = 3306
# MySQL服务端默认监听的TCP/IP端口

socket = /data/mysql/mysql.sock
# 用于本地连接的Unix套接字文件存放路径

pid-file = /data/mysql/mysql.pid
# 进程ID文件存放路径

basedir = /var/lib/mysql
# 安装目录

datadir = /data/mysql/
# MySQL数据文件存放路径

character_set_server = utf8mb4
# MySQL服务端字符集

collation_server = utf8mb4_general_ci
# MySQL服务端校对规则

default-storage-engine = InnoDB
# 设置默认存储引擎为InnoDB

初始化

/var/lib/mysql/bin/mysqld --user=mysql --basedir=/var/lib/mysql/ --datadir=/data/mysql/ --initialize

启动服务

[root@xxxx mysql]# /var/lib/mysql/support-files/mysql.server start
Starting MySQL.. SUCCESS!

到这里我们的mysql服务就可以了正常启动了。

软链接创建

ln -s /var/lib/mysql/bin/mysql /usr/bin/mysql
ln -s /var/lib/mysql/bin/mysqladmin /usr/bin/mysqladmin

配置mysql服务启动项

cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld

赋予执行权限

chmod 755 /etc/init.d/mysqld

检查启动项列表中没有mysqld这个,如果没有就添加mysqld

chkconfig --list mysqld
chkconfig --add mysqld

到这里我们就可以使用 service mysqld xxx 模式启动mysql了

service mysqld
Usage: mysqld  {start|stop|restart|reload|force-reload|status}  [ MySQL server options ]

登陆mysql

我们在初始化数据库时系统会随机生成一个 root 密码放在日志文件中

[root@xxx mysql]# cat /data/logs/mysql/error.log | grep root@localhost
2020-05-19T09:29:51.558086+08:00 1 [Note] A temporary password is generated for root@localhost: &g*%&PbIo4BV

这里的 &g*%&PbIo4BV 就是密码
root登陆

mysql -uroot -p
# 等提示输入密码的时候输入刚才那个随机密码,可以粘贴

修改root密码

set password for root@localhost = password(‘xxx’);

到这里我们就可以正常使用mysql,建议使用前对配置优化一下。
有啥不对的地方请指出,互相学习进步。

遇到的问题

1 提示 libnuma.so 相关错误

/var/lib/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

解决办法:安装numactl

yum -y install numactl

2 文件夹权限赋值失败

chown: invalid user: `mysql:mysql'

解决办法:添加mysql用户

groupadd mysql
useradd -r -g mysql mysql

3 log目录给足权限但还是提示权限不足

2020-06-23T10:13:18.343308+08:00 0 [Note] --initialize specifed on an existing data directory.
2020-06-23T10:13:18.344396+08:00 0 [ERROR] Could not open file '/data/logs/mysql/error.log' for error logging: Permission denied
2020-06-23T10:13:18.344435+08:00 0 [ERROR] Aborting

解决办法:可能是上级目录权限不足引起的,逐级排查一下权限。

chmod 755 /data/logs/