MySQL 5.7 完整安装与配置文档 (CentOS 7)
一、安装方式概览
MySQL 5.7 在 CentOS 7 上有三种主流安装方式:
| 安装方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| YUM 安装 | 自动处理依赖,命令简单 | 需要网络 | 联网环境,快速部署 |
| RPM 包安装 | 离线安装,版本可控 | 需手动处理依赖顺序 | 内网环境,批量部署 |
| 二进制包安装 | 完全离线,路径自定义 | 需手动配置服务 | 高度定制,多版本共存 |
二、方式一:YUM 安装(推荐联网环境)
2.1 卸载系统自带 MariaDB
bash
# 检查是否存在 MariaDB
rpm -qa | grep mariadb
# 卸载(替换为实际包名)
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
2.2 添加 MySQL YUM 仓库
bash
# 下载并安装官方仓库
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
2.3 安装 MySQL 5.7
bash
yum install -y mysql-community-server
# 如遇 GPG 密钥问题,可临时跳过验证
yum install -y mysql-community-server --nogpgcheck
2.4 启动与初始配置
bash
# 启动并设置开机自启
systemctl start mysqld
systemctl enable mysqld
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
三、方式二:RPM 包离线安装
3.1 下载 RPM Bundle 包
- 下载地址:https://downloads.mysql.com/archives/community/
- 选择参数 :Product Version:
5.7.44→ OS:Red Hat Enterprise Linux→ OS Version:Linux 7 - 下载文件 :
mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar
3.2 解压并按顺序安装
bash
# 解压
tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar
# 必须按以下顺序安装
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
3.3 启动与初始配置
同 YUM 方式的 [2.4 节](#2.4 节)。
四、方式三:通用二进制包安装
4.1 下载与解压
bash
# 下载二进制包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
# 解压到 /usr/local
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql
4.2 创建用户与目录
bash
# 创建 mysql 用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
# 创建数据目录并授权
mkdir -p /data/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql
4.3 初始化数据库
bash
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
# 记住输出的临时密码
4.4 配置服务与启动
bash
# 复制启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 启动服务
service mysqld start
五、通用后续配置(所有方式均适用)
5.1 首次登录并修改密码
bash
# 使用临时密码登录
mysql -uroot -p
# 在 MySQL 命令行中执行
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
5.2 密码复杂度策略配置
MySQL 5.7 通过 validate_password 插件控制密码策略。
5.2.1 查看当前策略
sql
-- 检查插件是否已启用
SHOW VARIABLES LIKE 'validate_password%';
5.2.2 临时降低策略(设置弱口令)
sql
-- 设置策略为 LOW(仅校验长度)
SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_length=1;
-- 策略说明:
-- 0 / LOW : 仅校验长度 ≥8 位
-- 1 / MEDIUM : 需包含数字、大小写字母、特殊字符(默认)
-- 2 / STRONG : 额外校验字典文件
5.2.3 修改为简单密码
sql
-- 降低策略后,可设置简单密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
5.2.4 永久生效配置
编辑 /etc/my.cnf,在 [mysqld] 下添加:
ini
[mysqld]
validate_password_policy=0
validate_password_length=1
重启服务生效:
bash
systemctl restart mysqld
5.3 开启远程访问
sql
-- 授权 root 用户远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
5.4 防火墙放行端口
bash
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
# 或直接关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld
5.5 设置 UTF-8 字符集
编辑 /etc/my.cnf,在 [mysqld] 下添加:
ini
[mysqld]
character-set-server=utf8
重启服务:
bash
systemctl restart mysqld
5.6 创建项目专用数据库
sql
-- 登录后执行
CREATE DATABASE springboot_vue_test DEFAULT CHARACTER SET utf8;
六、常用管理命令速查
| 操作 | 命令 |
|---|---|
| 启动服务 | systemctl start mysqld |
| 停止服务 | systemctl stop mysqld |
| 重启服务 | systemctl restart mysqld |
| 查看状态 | systemctl status mysqld |
| 设置开机自启 | systemctl enable mysqld |
| 登录数据库 | mysql -uroot -p |
| 查看版本 | SELECT VERSION(); |
| 查看临时密码 | grep 'temporary password' /var/log/mysqld.log |
七、常见问题排查
| 问题 | 解决方法 |
|---|---|
| 端口 3306 被占用 | lsof -i:3306 查看占用进程并终止 |
| 启动失败,日志报权限错误 | chown -R mysql:mysql /var/lib/mysql |
| 密码策略太严格 | 按 [5.2 节](#问题 解决方法 端口 3306 被占用 lsof -i:3306 查看占用进程并终止 启动失败,日志报权限错误 chown -R mysql:mysql /var/lib/mysql 密码策略太严格 按 5.2 节 降低策略 远程连接被拒 检查防火墙和 5.3 节 授权 依赖 libaio 缺失 yum install -y libaio) 降低策略 |
| 远程连接被拒 | 检查防火墙和 [5.3 节](#问题 解决方法 端口 3306 被占用 lsof -i:3306 查看占用进程并终止 启动失败,日志报权限错误 chown -R mysql:mysql /var/lib/mysql 密码策略太严格 按 5.2 节 降低策略 远程连接被拒 检查防火墙和 5.3 节 授权 依赖 libaio 缺失 yum install -y libaio) 授权 |
| 依赖 libaio 缺失 | yum install -y libaio |
八、版本选择建议
| 版本 | 说明 |
|---|---|
| 5.7.44 | 最终版,安全补丁最全,推荐生产使用 |
| 5.7.33 | 中间版本,存在已知漏洞,不推荐 |
建议直接安装 5.7.44 以获得最佳安全性和稳定性。