能装,但必须手动禁用 MySQL 8.0 仓库并彻底卸载 mariadb-libs,否则 yum install 默认安装 8.0 且因库冲突导致 mysqld 启动后秒退;MySQL 5.7 需显式启用对应仓库子源并验证生效。

直接说结论:能装,但必须手动禁用 MySQL 8.0 仓库,否则 yum install mysql-community-server 默认会装 8.0;同时得先卸载系统自带的 mariadb-libs,否则服务启动后立刻崩溃。
为什么 yum install mysql-server 会装错或失败
CentOS 7 最小化安装默认带 mariadb-libs,它和 MySQL 的 libmysqlclient 符号冲突,导致 mysqld 启动后几秒内就退出,日志里只显示 Failed to start mysqld.service。另外,MySQL 官方 yum 仓库中 mysql80-community 是默认启用的,mysql57-community 反而是禁用状态——所以不干预的话,yum install mysql-community-server 实际拉的是 8.0。
- 检查冲突包:
rpm -qa | grep -i 'mariadb\|mysql' - 强制卸载:
yum remove mariadb-libs -y(不要加--nodeps) - 清空残留:
rm -rf /var/lib/mysql /etc/my.cnf(有自定义配置请先备份)
怎么确保装到的是 MySQL 5.7 而不是 8.0
关键在仓库开关。官方提供的 repo RPM 包(如 mysql57-community-release-el7-11.noarch.rpm)只是“注册”了多个子仓库,并不自动启用 5.7。必须显式禁用 8.0、启用 5.7。
- 下载并安装仓库包:
wget 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 - 启用 5.7:
yum-config-manager --enable mysql57-community - 验证生效:
yum repolist enabled | grep mysql输出应只含mysql57-community
安装后连不上、密码不对、改不了密码怎么办
MySQL 5.7 首次启动会初始化数据目录,耗时 2–5 分钟,期间日志持续写入 /var/log/mysqld.log。很多人在服务刚 start 就去 grep 密码,结果为空——因为初始化根本没完成。
- 启动并等待初始化完成:
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}' - 登录后立刻改密码:
mysql -uroot -p -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass1!';" - 如果提示密码策略太严,临时降级:
set global validate_password.policy=LOW;(需先登录)
真正容易被忽略的点是:ARM64 架构下这套流程照样适用,但前提是你的 CentOS 7 镜像是 aarch64 版本,且所有 RPM 包都匹配架构——x86_64 的 mysql57-community-release-el7-11.noarch.rpm 在 ARM 上能装,但后续 yum install 会因找不到 aarch64 的 mysql-community-server 包而失败。这时候就得换方案:去 MySQL Archives 下载 aarch64 专用 RPM 包,再 yum localinstall。


















