MySQL部署手册(5.7.20/8.0)

安装 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 数据库

前置规划说明

  1. 关闭 SELinux;防火墙放行 3306 端口;云服务器额外放行安全组 3306 入方向
  2. 生产环境建议数据盘单独挂载到 /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同时创建用户

相关推荐
todoitbo1 小时前
报表总在扫大表,列存储应该放在哪一层
大数据·数据库·报表·国产数据库
ss2731 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 19 PostgreSQL逻辑备份:pg_dump与pg_dumpall
数据库·笔记·postgresql
啵啵啵鱼1 小时前
九、JDBC 操作 MySQL 数据库
android·数据库·mysql
handonch1 小时前
MySQL → Kingbase PG模式 高频SQL替换清单
数据库·mysql·postgresql
姜鱼问生1 小时前
Kuma SQLite 备份坑
数据库·sqlite
水无痕simon1 小时前
15 MySQL是怎么保证高可用的?
数据库·mysql
漫步人生走在路上1 小时前
外贸SEO中的品牌词与产品词策略:大卖家和小卖家的不同打法
大数据·javascript·网络·数据库·人工智能·搜索引擎
张小姐的猫1 小时前
【MySQL】数据类型
android·linux·数据库·c++·mysql·adb·php
泡海椒1 小时前
JQuick-SQL LIMIT 分页:限制行数与偏移查询
数据库·sql