必须先卸载mariadb-libs等冲突包,再禁用mysql80-community源、启用mysql57-community源,安装mysql-community-server后等待初始化完成并提取临时密码,最后调低密码策略方可重置。

直接装 mysql-community-server 很大概率会装成 MySQL 8.0,或者卡在 GPG 校验、MariaDB 冲突、临时密码找不到这三处——不是安装失败,而是“看似成功,实则不可用”。
先清掉 MariaDB 冲突包,否则 mysqld 启动即退出
CentOS 7 最小化安装默认带 mariadb-libs,它和 MySQL 5.7 的 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(有自定义配置请先备份)
用 el7-11 RPM 配置 YUM 源,并禁用 mysql80-community
官方仓库 RPM 包名随时间更新,el7-11 是当前(2026年9月)最稳定可用的版本;用 el7-9 或 el7-10 可能因源过期导致 yum install 找不到包。
- 下载:
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' 失败,只是因为没等初始化完成就查了日志。
- 安装服务:
yum install -y mysql-community-server(注意不是mysql-server,后者在 CentOS 7 中指向 MariaDB) - 导入密钥防 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
登录后必须立刻调低密码策略,否则 ALTER USER 会报 ERROR 1819
MySQL 5.7 默认启用强密码策略,validate_password_policy=1(MEDIUM),要求大小写+数字+特殊字符+至少 8 位。新密码设为 root123 都会失败。
- 登录:
mysql -uroot -p(输入上一步提取的临时密码) - 执行:
SET GLOBAL validate_password_policy = 0; - 再执行:
SET GLOBAL validate_password_length = 4;(长度可设更低,但不建议低于 4) - 然后才能安全重置:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_pass';
最容易被忽略的是:临时密码只在首次启动日志中出现一次,且初始化未完成前查不到;另外,validate_password 相关变量是全局动态变量,必须用 SET GLOBAL 修改,SET SESSION 无效。











