离线安装mysql 8.0失败主因是未彻底卸载mariadb-libs、未按common→libs→client-plugins→icu-data-files→client→server顺序安装、或缺失libaio/perl等底层依赖,导致rpm -ivh硬拦截或启动失败。

rpm -ivh 不是万能的,离线装 MySQL 8.0 失败,90% 是因为没清干净 mariadb-libs、没按顺序装包、或漏了 libaio 和 perl 这类底层依赖——这些错误不会直接告诉你缺什么,只会卡在“file conflicts”或“Failed dependencies”。
必须先卸载 mariadb-libs,否则所有 rpm -ivh 都会硬拦截
CentOS 7 默认自带 mariadb-libs,它和 mysql-community-libs 提供同名文件(比如 /usr/lib64/libmysqlclient.so.18),RPM 包管理器直接拒绝安装,报错类似:
file /usr/lib64/libmysqlclient.so.18 from install of mysql-community-libs conflicts with file from package mariadb-libs
这不是警告,是终止性错误。必须手动清理:
- 查残留:
rpm -qa | grep mariadb - 强制卸载(替换为实际版本号):
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 - 再跑一次
rpm -qa | grep mariadb,输出必须为空 - 顺手检查
/etc/my.cnf和/etc/my.cnf.d/,删掉残留配置,避免初始化时读错参数
基础依赖不能靠 rpm 自动解决,libaio 和 perl 缺一不可
MySQL 8.0 的 RPM 包不带运行时依赖,离线环境下 yum install 不可用,必须提前把对应 RPM 包拷过来手动装:
-
libaio:异步 I/O 核心依赖,缺失会导致mysqld启动失败,日志里出现undefined symbol: aio_read -
perl:mysqld --initialize内部调用 Perl 脚本,没它会报/usr/bin/perl: No such file or directory -
numactl-libs:非严格必需,但在 NUMA 架构服务器上影响内存访问效率,建议一并装上 - 验证是否齐全:
rpm -qa | grep -E 'libaio|perl|numactl',缺哪个补哪个
安装顺序错一个,server 就起不来
MySQL 8.0.19+ 引入插件化认证,mysql-community-client-plugins 和 mysql-community-icu-data-files 已成硬依赖,且必须在 mysql-community-server 之前安装。错序后果严重:
-
mysql-community-server安装时报 “Failed dependencies: mysql-community-client-plugins is needed” - 即使装完,启动后无法加载
caching_sha2_password插件,客户端连不上 - 正确顺序(仅列必需):
mysql-community-common→mysql-community-libs→mysql-community-client-plugins→mysql-community-icu-data-files→mysql-community-client→mysql-community-server - 不要图省事用
rpm -ivh mysql-community-*.rpm --force --nodeps,跳过依赖检查只会让问题延后到启动阶段
初始化后权限和 SELinux 上下文必须手动修正
mysqld --initialize 默认以当前用户身份创建数据目录,但服务由 mysql 用户运行,不改权限会导致启动失败:
- 执行:
chown -R mysql:mysql /var/lib/mysql - 如果启用了 SELinux(默认开启),还需恢复上下文:
restorecon -Rv /var/lib/mysql - 别忽略
/var/log/mysqld.log权限,也得归mysql:mysql,否则日志写不进去,排查无从下手 - 临时密码在
/var/log/mysqld.log里,用grep 'temporary password' /var/log/mysqld.log查,不是cat /var/log/mysqld.log | grep password——后者可能匹配到无关行











