离线安装MySQL第一步是确认系统架构和发行版:执行cat /etc/os-release查ID和VERSION_ID,uname -m查x86_64或aarch64;RHEL 8需卸载mariadb-libs并按mysql-community-common→libs→server顺序安装,补全numactl、perl-Data-Dumper等依赖,手动创建/var/lib/mysql并修复SELinux上下文。

确认系统架构和发行版再下载包
离线安装第一步不是传包,是搞清目标机器的底细。在 Red Hat 8 服务器上直接跑:cat /etc/os-release 看 ID 和 VERSION_ID,再跑 uname -m 确认是 x86_64 还是 aarch64。MySQL 官网的 RPM Bundle 分 RHEL 7/8/9,选错版本(比如给 RHEL 8 装了 el7 的包)会导致 mysql-community-server 安装时提示“Failed dependencies”,且无法用 yum localinstall 自动解决。
必须卸载 mariadb-libs 再装 MySQL
RHEL 8 默认预装 mariadb-libs,它和 mysql-community-libs 文件路径冲突(尤其是 /usr/lib64/libmysqlclient.so.21),不清理就装 MySQL 会报错:file /usr/lib64/libmysqlclient.so.21 from install of mysql-community-libs-8.0.xx conflicts with file from package mariadb-libs-3.xx。
- 先查残留:
rpm -qa | grep mariadb - 强制卸载(RHEL 8 下通常安全):
rpm -e --nodeps mariadb-libs - 再检查一次输出是否为空,避免漏掉
mariadb-common或mariadb-backup
安装顺序不能错,且要补全关键依赖
RPM Bundle 里的包有强依赖链,mysql-community-common 必须第一个装,mysql-community-libs 第二个,mysql-community-server 必须最后。但 RHEL 8 比 CentOS 7 多一个隐藏坑:mysql-community-server 启动时依赖 numactl 和 perl-Data-Dumper,离线环境里这两个包不会随 MySQL 一起提供。
- 必须提前准备好并安装:
numactl-2.0.14-3.el8.x86_64.rpm、perl-Data-Dumper-2.174-4.el8.x86_64.rpm、libaio-0.3.109-13.el8.x86_64.rpm - 安装命令统一用:
rpm -ivh <pkg>.rpm(不用yum localinstall,避免触发联网检查) - 如果提示
NOKEY,忽略即可;若提示failed to set locale,说明系统语言环境没设好,临时执行:export LC_ALL=C
初始化失败常见于配置文件和 SELinux
装完 mysql-community-server 后,运行 systemctl start mysqld 卡住或报 Job for mysqld.service failed,大概率是两个原因:
-
/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf里写了不存在的路径,比如datadir=/var/lib/mysql但目录没权限,或log-error指向的路径父目录不存在 - SELinux 处于 enforcing 模式,阻止 mysqld 访问
/var/lib/mysql,查日志:ausearch -m avc -ts recent | grep mysqld,临时放行:setsebool -P mysqld_disable_trans 1或restorecon -Rv /var/lib/mysql - 首次启动成功后,初始密码在
/var/log/mysqld.log里,用grep 'temporary password' /var/log/mysqld.log提取
最易被忽略的是:RHEL 8 的 mysql-community-server RPM 不会自动创建 /var/lib/mysql 目录,也不处理 SELinux 上下文。哪怕你把包装全了、顺序对了、依赖补齐了,这两点没手动干预,服务照样起不来。


















