MySQL 5.7在CentOS 7上可5分钟完成部署,关键需绕过GPG密钥校验、MariaDB冲突和临时密码提取失败三处陷阱:先卸载mariadb-libs等冲突包,再用mysql57-community-release-el7-11.rpm配置YUM源并禁用mysql80-community,安装mysql-community-server后导入RPM-GPG-KEY-mysql-2022,启动服务等待初始化完成,再安全提取临时密码并登录后立即调低validate_password.policy再重置密码。

mysql-community-server 能直接用 yum 安装,但默认可能装错版本(比如 8.0),且容易卡在 GPG 密钥、MariaDB 冲突、临时密码提取失败这几个点。只要绕开这三处,5 分钟内可完成部署。
确认系统版本并清理 MariaDB 冲突包
CentOS 7 最小化安装常自带 mariadb-libs,它会和 mysql-community-server 的 libmysqlclient 符号冲突,导致服务启动后立刻退出或报 Failed to start mysqld.service。
- 先检查:运行
rpm -qa | grep -i 'mariadb\|mysql',若输出含mariadb-libs或mariadb-server,必须卸载 - 执行
yum remove mariadb-libs mariadb-server -y(注意不要加--nodeps,否则可能破坏其他依赖) - 卸载后清空残留配置:
rm -rf /var/lib/mysql /etc/my.cnf(如有自定义配置请先备份)
下载并启用 MySQL 5.7 专用 Yum 仓库
官方仓库 RPM 包名随时间更新,el7-11 是目前(2026年5月)最稳定可用的版本;用 el7-9 或 el7-10 可能因源过期导致 yum install 找不到包。
- 执行
wget -c https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm(-c支持断点续传) - 安装仓库:
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm - 关键一步:禁用 8.0 源,避免
yum install自动选错版本:yum-config-manager --disable mysql80-community - 验证是否生效:
yum repolist enabled | grep mysql应只显示mysql57-community
安装 + 启动 + 提取临时密码的连贯操作
mysqld 第一次启动会初始化数据目录,耗时 2–5 分钟,期间日志写入 /var/log/mysqld.log。若手动 grep 失败,大概率是没等初始化完成就查了日志。
- 安装命令必须带
mysql-community-server(不是mysql-server,后者在 CentOS 7 中指向 MariaDB):yum install -y mysql-community-server - 导入密钥防 GPG 报错:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022(2023 密钥在部分镜像站尚未同步,仍推荐用 2022 版) - 启动并等待初始化完成:
systemctl start mysqld && while ! grep -q "completed" /var/log/mysqld.log; do sleep 2; done - 安全提取密码(兼容日志格式变化):
grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}' | tail -1
登录后立即要处理的两个强制动作
MySQL 5.7 默认启用 validate_password 插件,且 root 密码过期策略严格。不处理会导致后续所有 SQL 操作都报 Your password has expired 或 Password validation failed。
- 登录:
mysql -u root -p,输入上一步拿到的临时密码 - 重置密码前必须先改策略(否则新密码总被拒):
SET GLOBAL validate_password.policy=LOW; - 再执行密码修改:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123'; - 如果要用
mysql_secure_installation,务必在它提示“Change the password for root ?”时选y,否则它不会真正改密码
validate_password.policy 就强行设弱密码——这三步卡住,整个流程就会停在“能启不能登”的状态。


















