mysql 5.7在centos 7上5分钟可部署,关键需卸载mariadb-libs等冲突包、禁用mysql80-community源、导入rpm-gpg-key-mysql-2022、等待mysqld初始化完成后再提取临时密码,并登录后先调低validate_password.policy再重置密码。

mysql-community-server 能直接用 yum 安装,但默认很可能装成 mysql80-community 或根本装不上——关键得先清理冲突、锁死源、绕过 GPG 校验失败和临时密码提取时机这三处卡点。
卸载 MariaDB 冲突包是启动前必须做的一步
CentOS 7 最小化安装自带 mariadb-libs,它和 mysql-community-server 的 libmysqlclient 符号冲突,导致 systemctl start mysqld 启动后立刻退出,日志里可能只显示 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(如有自定义配置请提前备份)
Yum 源配置必须禁用 mysql80-community
官方 mysql57-community-release-el7-11.noarch.rpm 包默认同时启用 5.7 和 8.0 两个子仓库,yum install mysql-community-server 会优先选 8.0,装完发现版本不对就晚了。
- 下载并安装源包:
wget -c https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm→rpm -Uvh mysql57-community-release-el7-11.noarch.rpm - 立即禁用 8.0:
yum-config-manager --disable mysql80-community - 验证是否生效:
yum repolist enabled | grep mysql应只输出一行含mysql57-community
安装后必须等初始化完成才能查临时密码
mysqld 第一次启动会初始化数据目录,耗时 2–5 分钟,期间日志持续写入 /var/log/mysqld.log。很多用户执行 grep 'temporary password' /var/log/mysqld.log 返回空,其实是还没初始化完就去查了。
- 安装命令:
yum install -y mysql-community-server(不是mysql-server) - 导入密钥防 GPG 报错:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 - 启动并等待:
systemctl start mysqld,然后轮询检查:while ! grep -q "A temporary password" /var/log/mysqld.log; do sleep 2; done - 提取密码:
grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'
登录后改密码前务必调低 validate_password.policy
MySQL 5.7 默认开启密码强度策略,validate_password.policy=1(MEDIUM)要求密码至少 8 位、含大小写字母、数字、特殊字符。直接 ALTER USER 改简单密码会报错 Your password does not satisfy the current policy requirements。
- 登录:
mysql -uroot -p,输入上一步提取的临时密码 - 先降策略:
set global validate_password.policy=0;(或=LOW) - 再改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_pass'; - 如需远程访问,后续再执行:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_new_pass'; FLUSH PRIVILEGES;
真正容易被忽略的是初始化等待逻辑和密码策略的联动:不等日志写完就查密码,或没调策略就强行改密,都会让整个流程卡在最后一步。这两步不是“可选优化”,而是安装链路中不可跳过的实际依赖。











