结论是必须先解决mariadb-libs冲突或校准仓库版本,而非盲目补依赖;因CentOS 8预装mariadb-libs与MySQL官方包争用/libmysqlclient.so.18等文件路径,yum拒绝覆盖导致安装失败。

直接说结论:CentOS 8 上装 MySQL 8.0 遇到依赖问题,绝大多数情况不是缺包,而是 mariadb-libs 冲突或仓库配置没对准系统版本 —— 别急着 --force 或 --nodeps,先查冲突源。
为什么 yum install mysql-community-server 报 “file conflicts with package mariadb-libs”?
CentOS 8 默认预装 mariadb-libs(路径如 /usr/lib64/libmysqlclient.so.18),而 MySQL 官方 RPM 包自带同名符号链接和库文件,yum 拒绝覆盖。这不是“少装依赖”,是两个包抢同一个文件路径。
- 执行
rpm -qa | grep -i mariadb,确认是否已安装mariadb-libs - 执行
dnf repoquery --whatprovides /usr/lib64/libmysqlclient.so.18,看哪个包提供该文件 - 若输出含
mariadb-libs,就必须先处理它,而非硬装 MySQL
如何安全移除 mariadb-libs 而不破坏其他服务?
某些服务(如 postfix)动态链接 libmysqlclient.so.18,直接 rpm -e mariadb-libs 可能导致崩溃。稳妥做法是用 dnf swap 替换,而非删除:
- 先启用 MySQL 官方仓库:
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y - 禁用默认 MariaDB 模块:
sudo dnf module reset mysql && sudo dnf module disable mysql mariadb - 执行替换:
sudo dnf swap mariadb-libs mysql-community-libs-compat - 再装主包:
sudo dnf install mysql-community-server
注意:mysql-community-libs-compat 提供兼容性符号链接(如 libmysqlclient.so.18),能维持旧服务运行。
libaio、numactl、compat-openssl10 这些包到底要不要装?
它们不是可选“增强功能”,而是 MySQL Server 启动必需的底层依赖:
-
libaio:MySQL 异步 I/O 必需,报错libaio.so.1()(64bit) is needed就必须装:sudo dnf install libaio -y -
numactl:影响 NUMA 架构下的内存分配,不装也能启动,但日志会警告;建议装:sudo dnf install numactl -y -
compat-openssl10:MySQL 8.0.27+ 在 CentOS 8.4+ 上可能报libcrypto.so.10找不到 —— 这是因为新版 OpenSSL 1.1 不向下兼容,必须装这个兼容层:sudo dnf install compat-openssl10 -y
用 rpm -ivh 手动装时提示 “Failed dependencies” 怎么办?
手动装 RPM 包最容易踩的坑,就是没按依赖顺序装,或用了 EL7 包装在 EL8 上。关键点:
- 确认 RPM 包名后缀是
el8,不是el7(例如mysql-community-server-8.0.42-1.el8.x86_64.rpm) - 必须按顺序装:
mysql-community-common→mysql-community-libs→mysql-community-client→mysql-community-server - 如果仍报依赖缺失,别用
--force—— 先运行dnf deplist mysql-community-server查真实缺项,再针对性装
最常被忽略的是 glibc 版本:MySQL 8.0 官方包要求 glibc ≥ 2.28(CentOS 8.0+ 满足),但若从非官方渠道下载了 EL7 包,就会因 GLIBC_2.17 等符号缺失而启动失败 —— 此时 systemctl start mysqld 无声退出,journalctl -u mysqld 里只有一行 failed to load glibc version,极难排查。


















