参考文章地址: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/