必须先添加MySQL 8.0官方YUM仓库(el7版本),清除MariaDB及残留文件,安装libaio等依赖,关闭SELinux临时模式,再安装mysql-community-server;初始密码在/var/log/mysqld.log中,登录后须立即用ALTER USER修改符合强度要求的密码。

直接用 yum install mysql-community-server 肯定装不上 MySQL 8.0 —— 默认源里压根没有,CentOS 7 自带的是 MariaDB,不手动加官方仓库,要么装错、要么报错找不到包。
必须先加对版本匹配的 MySQL 官方 YUM 仓库
CentOS 7 只能用 el7 后缀的仓库包,错选 el8 或 el6 会导致 yum repolist 根本看不到 MySQL 源。别信“一键脚本”或镜像站改名的 RPM,GPG 验证失败、后续升级断链是高频问题。
- 查系统版本:
cat /etc/os-release | grep VERSION_ID,确认输出是VERSION_ID="7" - 下载正确包:
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm(官方地址最稳) - 安装它:
sudo rpm -Uvh mysql80-community-release-el7-7.noarch.rpm - 验证是否生效:
yum repolist enabled | grep mysql80-community,必须看到状态为enabled
装之前得清干净 MariaDB 和残留文件
CentOS 7 默认预装 mariadb-libs,它和 mysql-community-server 冲突,yum install 会卡在 Transaction Check Error,不是网络慢,是 rpm 拒绝覆盖同名文件。
- 查旧包:
rpm -qa | grep -E '^(mysql|mariadb)' - 强制卸载(忽略依赖):
sudo rpm -e --nodeps $(rpm -qa | grep -E '^(mysql|mariadb)') - 删残留:
sudo rm -rf /var/lib/mysql /etc/my.cnf /var/log/mysqld.log - 别跳这步:哪怕你没装过数据库,
mariadb-libs通常都存在,不卸载必失败
启动失败?大概率是 libaio 缺失或 SELinux 拦截
systemctl start mysqld 报 failed,90% 不是配置问题,而是初始化阶段被底层拦住。日志里看不到 “temporary password”,说明 mysqld 根本没跑完初始化。
- 装基础依赖:
sudo yum install -y libaio numactl(缺libaio.so.1会直接报 shared libraries 错误) - 临时关 SELinux:
sudo setenforce 0(不是禁用服务,只是切 mode;生产环境请配策略,别永久关) - 检查磁盘:
df -h /var,/var/lib/mysql初始化需要至少 500MB 空闲空间 - 看真实错误:
sudo journalctl -u mysqld -n 50,重点扫最后一段,不是grep password
初始 root 密码只生成一次,且必须立刻改
密码藏在 /var/log/mysqld.log,但只在首次成功启动时写入。之后重启不会重写,日志为空=初始化根本没完成。
- 正确提取:
sudo grep 'temporary password' /var/log/mysqld.log(注意是单引号,避免 shell 展开) - 登录后第一件事:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPass123!';(MySQL 8.0 默认启用validate_password,密码必须含大小写+数字+符号,长度≥8) - 别试空密码或简单密码:连
SELECT 1;都会被拒绝,不是连不上,是认证直接失败
最易忽略的点:仓库包里的 [mysql57-community] 默认是 enabled=1,哪怕你装了 el7-7 版本,yum 还是可能优先拉 5.7 的包。一定手动编辑 /etc/yum.repos.d/mysql-community.repo,把 5.7 段设为 enabled=0,80 段确保 enabled=1,再 yum clean all && yum makecache。











