安装 MySQL 5.7.20: 使用 YUM 方式安装并验证版本
1. 服务器环境及 IP 规划
1.1 基础环境
| 项目 | 参数 |
|---|---|
| 操作系统 | CentOS 7.9 x86_64 |
| MySQL 版本 | MySQL 5.7.20 |
| 安装方式 | Yum rpm 源安装 |
| 默认端口 | 3306 |
| 默认数据目录 | /var/lib/mysql |
| 配置文件 | /etc/my.cnf |
| 日志文件 | /var/log/mysqld.log |
| 服务名称 | mysqld |
1.2 IP 规划示例
| 主机名 | 内网 IP | 用途 |
|---|---|---|
| second | 192.168.28.102 | MySQL 数据库服务端 |
说明:
a. 关闭防火墙 / 放行 3306 端口,关闭 SELinux 避免权限问题;
b. 生产环境建议单独规划数据盘挂载到 /var/lib/mysql。
2. 详细安装步骤及命令
前置说明:CentOS 7 自带 mariadb 库,需要先卸载,避免冲突
2.1 环境预处理
#1. 关闭SELinux(临时+永久)
setenforce 0
#sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#2. 防火墙放行3306端口(或者直接关闭防火墙)
#放行端口
#firewall-cmd --add-port=3306/tcp --permanent
#firewall-cmd --reload
#3. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#4. 卸载系统自带mariadb,防止冲突
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs
关闭防火墙并关闭开机自启,关闭增强功能

卸载系统自带mariadb

2.2 安装 MySQL 官方 Yum 源(mysql57-community-release)
MySQL 5.7.20 属于 5.7 系列,使用 mysql57 的 yum 源
# 下载mysql yum源rpm包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装yum源
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
# 查看可用mysql版本,确认5.7源启用
yum repolist enabled | grep mysql
注意:该源默认最新 5.7 小版本,如果需要固定 5.7.20 版本,安装时指定版本号
下载mysql yum源rpm包

安装yum源

查看mysql可用版本,确认5.7源启动

2.3 Yum 安装 MySQL 5.7.20
# 安装指定版本mysql-server
yum install -y mysql-community-server-5.7.20
安装指定版本mysql-server

2.4 启动服务 & 设置开机自启
# 启动mysqld服务
systemctl start mysqld
设置开机自启
systemctl enable mysqld
查看服务状态
systemctl status mysqld

2.5 获取初始密码 & 初始化安全配置(必做)
MySQL 5.7 首次启动会自动生成临时密码,存放在日志文件
# 查看初始临时密码
grep 'temporary password' /var/log/mysqld.log
密码为:RCY/zQ?xw7no

# 登录mysql
mysql -uroot -p
# 输入上面查到的临时密码
修改root密码(5.7密码策略默认要求:大小写、数字、特殊符号,长度≥8)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
# 可选:允许root远程访问(生产按需开启)
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'Root@123456';
FLUSH PRIVILEGES;
exit;


2.6(可选)基础配置优化 `/etc/my.cnf`
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
# 字符集
character-set-server=utf8mb4
# 默认时区
default-time_zone = '+8:00'
修改后重载:
systemctl restart mysqld
3. 验证结果
3.1 验证 MySQL 版本号(核心要求)
# 方式1:命令行直接查看版本
mysql --version
方式2:登录mysql内查看
mysql -uroot -pRoot@123456
select version();
预期输出:`5.7.20`
3.2 验证服务状态
systemctl status mysqld
预期:`active (running)`
3.3 验证端口监听
netstat -tlnp | grep 3306
# 没有netstat用ss
ss -tlnp | grep 3306
预期:mysqld 进程监听 0.0.0.0:3306
3.4 验证登录
mysql -uroot -pRoot@123456
正常进入 mysql 交互界面,代表部署完成

安装 MySQL 8.0: 使用 YUM 方式安装并验证版本
环境:CentOS7.9 x86_64 | MySQL 8.0.36(8.0 系列稳定版,yum 在线安装) 说明:
1. 服务器环境及 IP 规划
表格
| 项目 | 参数 |
|---|---|
| 操作系统 | CentOS 7.9 x86_64 |
| MySQL 版本 | MySQL 8.0.36 |
| 安装方式 | 官方 Yum 源安装 |
| 默认端口 | 3306 |
| 数据目录 | /var/lib/mysql |
| 主配置文件 | /etc/my.cnf |
| 错误日志 | /var/log/mysqld.log |
| 服务名 | mysqld |
IP 规划示例
表格
| 主机名 | 内网 IP | 用途 |
|---|---|---|
| third | 192.168.28.103 | MySQL8.0 数据库 |
前置规划说明
- 关闭 SELinux;防火墙放行 3306 端口;云服务器额外放行安全组 3306 入方向
- 生产环境建议数据盘单独挂载到
/var/lib/mysql
2. 详细安装步骤及命令
2.1 环境预处理(卸载冲突包)
# 关闭SELinux
setenforce 0
#sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 防火墙放行3306
#firewall-cmd --add-port=3306/tcp --permanent
#firewall-cmd --reload
# 可选:关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 卸载自带mariadb,避免冲突
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs
关闭防火墙,关闭开机自启,临时关闭增强功能
卸载自带mariabd

2.2 安装 MySQL 官方 yum 源
# 下载mysql8.0 yum源rpm包
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 安装源
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
# 查看启用的mysql源,确认mysql80启用
yum repolist enabled | grep mysql
下载mysql8.0官方源

安装源

查看启用的mysql源,确认mysql80启用
2.3 yum 安装 mysql8.0 服务端
yum install -y mysql-community-server --nogpgcheck
# --nogpgcheck 跳过gpg密钥报错(CentOS7经常出现密钥过期问题)
2.4 启动服务、开机自启
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

2.5 获取初始密码 + 登录初始化(重点!8.0 语法和 5.7 不一样)
# 抓取临时root密码
grep 'temporary password' /var/log/mysqld.log
密码:>45uOGgjnvJJ

# 登录mysql
mysql -uroot -p
# 粘贴上面查到的临时密码
⚠️ MySQL8.0 不能用 grant 语句顺便创建用户 + 设置密码,必须分开两条语句!
-- 修改root本地密码(默认密码策略:长度>=8,大小写、数字、特殊符号)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
-- 【可选】创建远程root用户(8.0标准写法,先创建用户,再授权)
CREATE USER 'root'@'%' IDENTIFIED BY 'Root@123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;
8.0 默认认证插件是
caching_sha2_password,Navicat 低版本连不上,解决语句:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';
FLUSH PRIVILEGES;
2.6 基础配置 /etc/my.cnf(可选)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
character-set-server=utf8mb4
default-time_zone = '+8:00'
# 关闭密码校验插件(测试环境可选,生产不要)
# validate_password=OFF
修改后重启:
systemctl restart mysqld
3. 验证结果
# 方式1:系统命令查看版本
mysql --version
# 方式2:登录数据库内查看版本
mysql -uroot -pRoot@123456
select version();

✅ 预期输出:8.0.xx
# 验证端口监听
ss -tlnp | grep 3306
# 验证服务状态
systemctl status mysqld

✅ 状态 active (running),3306 端口正常监听,可正常登录
MySQL 5.7.20 与 8.0 的区别
MySQL8.0 和 5.7 差异很大:认证插件默认caching_sha2_password、密码策略、用户授权语法变了,不再支持grant ... identified by同时创建用户







8.0 默认认证插件是