已禁用默认mariadb源需确认三点:1. 用yum list installed | grep mariadb检查mariadb-libs是否卸载;2. /etc/yum.repos.d/centos-base.repo中[base]和[updates]段含exclude=mariadb*;3. /etc/yum.repos.d/下存在mysql-community.repo。

如何确认 CentOS 7 系统已禁用默认 mariadb 源
CentOS 7 自带 mariadb-libs,若不先清理或屏蔽,mysql-community-server 安装时会因依赖冲突失败,报错类似:file /usr/share/mysql/charsets/Big5.xml from install of mysql-community-common-8.0.xx-1.el7.x86_64 conflicts with file from package mariadb-libs-1:5.5.68-1.el7.x86_64。
实操建议:
- 运行
yum list installed | grep mariadb查看是否已装mariadb-libs - 若存在,执行
yum remove mariadb-libs -y(注意:这不会删你已有数据库,只卸载冲突的共享库) - 编辑
/etc/yum.repos.d/CentOS-Base.repo,在[base]和[updates]段末尾加exclude=mariadb*,防止后续误升级回冲突包
下载并安装 MySQL 官方 yum 源 rpm 包
MySQL 官方不再提供直接 yum install mysql 的方式,必须先装源配置包;否则 yum search mysql 找不到 mysql-community-server。
实操建议:
- 去 MySQL Yum Repository 页面 复制最新版 el7 的 rpm 下载链接(如
mysql80-community-release-el7-10.noarch.rpm) - 用
wget下载后运行:sudo rpm -Uvh mysql80-community-release-el7-10.noarch.rpm - 验证是否生效:
ls /etc/yum.repos.d/ | grep mysql应看到mysql-community.repo和mysql-community-source.repo - 可选:若只需 MySQL 5.7,运行
sudo yum-config-manager --disable mysql80-community && sudo yum-config-manager --enable mysql57-community
安装 mysql-community-server 并初始化服务
装完源后,yum install mysql-community-server 才能正确拉取对应版本,且默认不启动、不初始化数据目录 —— 这和旧版 mysql-server 行为不同。
实操建议:
- 执行
yum install mysql-community-server -y,注意它会自动依赖安装mysql-community-client、mysql-community-common等 - 首次启动前必须初始化:
sudo mysqld --initialize --user=mysql(生成/var/lib/mysql及 root 临时密码) - 查看临时密码:
sudo grep 'temporary password' /var/log/mysqld.log(别跳过这步,8.0+ 默认强制改密) - 启动服务:
sudo systemctl start mysqld,并设开机自启:sudo systemctl enable mysqld
常见连接失败原因与验证要点
装完却连不上 localhost:3306?大概率是防火墙、绑定地址或认证插件问题,不是安装没成功。
实操建议:
- 检查监听:
sudo netstat -tlnp | grep :3306,确认 mysqld 进程在监听127.0.0.1:3306或*:3306 - CentOS 7 默认开 firewalld:
sudo firewall-cmd --permanent --add-service=mysql+sudo firewall-cmd --reload - 远程连接失败?检查
/etc/my.cnf中bind-address是否为127.0.0.1(改为0.0.0.0前需评估安全风险) - 登录报
ERROR 1045 (28000): Access denied for user 'root'@'localhost'?说明你没用日志里给的临时密码,或没运行mysql_secure_installation
最关键的遗漏点:很多人跳过 mysqld --initialize 直接启动,结果服务静默退出,systemctl status mysqld 显示 inactive,但日志里没明显报错 —— 因为数据目录为空,MySQL 8.0+ 拒绝启动。











