必须先卸载MariaDB,否则rpm安装会失败;系统自带mariadb-libs与mysql-community-libs冲突,导致mysql-community-server安装报依赖错误或静默失败;需rpm -qa | grep -i mariadb查包,yum remove -y mariadb-libs mariadb-server --nodeps强制卸载,并rm -rf /var/lib/mysql /etc/my.cnf /var/log/mysqld.log清理残留;安装顺序严格为common→icu-data-files→client-plugins→libs→client→server;缺perl或libaio会导致服务启动失败;初始密码在/var/log/mysqld.log中,需systemctl start mysqld后grep获取,登录后立即用ALTER USER改密。

必须先卸载 MariaDB,否则 rpm 安装会失败
系统自带的 mariadb-libs 与 mysql-community-libs 冲突,rpm 安装 mysql-community-server 时直接报依赖错误或静默失败。不能只停服务,必须彻底卸载:
- 查已安装包:
rpm -qa | grep -i mariadb - 强制卸载(含依赖):
yum remove -y mariadb-libs mariadb-server --nodeps - 清理残留:
rm -rf /var/lib/mysql /etc/my.cnf /var/log/mysqld.log
不清理 /var/lib/mysql 会导致后续 mysqld --initialize 失败或服务启动卡住。
安装顺序错不得,mysql-community-common 必须第一个
RPM 包之间有显式依赖链,乱序安装会触发 Failed dependencies 错误。正确顺序(以 el9 为例):
mysql-community-common-8.*.rpm-
mysql-community-icu-data-files-8.*.rpm(8.0.32+ 必装,否则 server 启动报 missing ICU data) -
mysql-community-client-plugins-8.*.rpm(8.0.44+ 强制依赖) mysql-community-libs-8.*.rpmmysql-community-client-8.*.rpmmysql-community-server-8.*.rpm
跳过 common 直接装 server 会提示 libmysqlclient.so.21 is needed 类错误;漏掉 icu-data-files 则 systemctl start mysqld 后日志里反复出现 ICU data files not found 并退出。
NOKEY 警告可忽略,但 perl 和 libaio 缺一不可
warning: ... NOKEY 是 GPG 签名未验证,不影响安装,不用加 --force。真正导致安装中断的是缺失基础依赖:
-
mysql-community-server启动需要/usr/bin/perl—— 不装会报Failed to allocate directory watch或直接 exit code 1 -
libaio是异步 I/O 库,CentOS/RHEL 9 默认不装:yum install -y libaio numactl perl - 若用
dnf install *.rpm代替逐个rpm -ivh,它会自动拉取依赖,但需确保仓库启用(如dnf config-manager --set-enabled crb)
别信“加 --nodeps --force 就能硬装”——硬装后服务大概率起不来,排查更费时间。
初始密码在 /var/log/mysqld.log,但得等服务首次启动完才生成
rpm -ivh mysql-community-server 只是复制文件,不初始化数据库。必须执行:
-
systemctl start mysqld(首次启动会自动运行mysqld --initialize) - 等 10–30 秒,再查日志:
grep 'temporary password' /var/log/mysqld.log - 登录后立即改密:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPass123!';
常见坑:日志为空 → 说明 mysqld 没真正启动成功,回看 systemctl status mysqld 和 journalctl -u mysqld -n 50,90% 是 libaio 或 inotify 限制问题(fs.inotify.max_user_watches=524288 需提前设好)。


















