dnf安装MySQL 8.0是Rocky Linux 9上最稳方式:先验证并启用mysql:8.0模块,导入2022/2023 GPG密钥、清缓存,再dnf install mysql-server;启动后从/var/log/mysqld.log提取临时root密码,运行mysql_secure_installation加固,并注意caching_sha2_password认证插件兼容性。

dnf 安装 MySQL 8.0 在 Rocky Linux 9 上是官方推荐、最稳定的方式,比源码编译省时省力,也比本地 RPM 包安装更易维护。只要仓库配置正确、GPG 密钥导入到位,整个过程 5 分钟内可完成。
确认系统版本与仓库兼容性
Rocky Linux 9 默认启用 mysql80-community 模块(RHEL 9+ 生态已将 MySQL 8.0 纳入标准模块流),但实际是否启用需验证:
- 运行 dnf module list mysql,输出中应有 mysql:8.0 且状态为 enabled
- 若显示 disabled 或未列出,执行 dnf module enable mysql:8.0
- 不要手动安装 mysql57-community-release 类旧源包,会冲突
导入新版 GPG 密钥(关键防错步骤)
MySQL 自 2022 年起更换签名密钥,Rocky 9 默认不带新密钥,跳过这步必报错:
- 典型错误:Public key for mysql-community-client-8.0.44-1.el9.x86_64.rpm is not installed. Error: GPG check FAILED
- 必须运行两条导入命令:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
- 然后清缓存:dnf clean all && dnf makecache
- 注意:只导入 2022/2023 密钥,不要混用旧版 RPM-GPG-KEY-mysql(会冲突)
安装与首次启动的实操要点
dnf install mysql-server 会自动拉取 mysql-community-server 及其依赖(含 client、common、icu-data-files 等),无需单独指定包名。
- 安装完成后,服务名为 mysqld(不是 mysql),启动命令是 systemctl start mysqld
- 首次启动会自动生成临时 root 密码,路径固定为 /var/log/mysqld.log,提取命令:sudo grep 'temporary password' /var/log/mysqld.log
- 启动失败常见原因:
- /var/lib/mysql 权限被误改(应属 mysql:mysql)
- SELinux 处于 enforcing 模式且未放行 mysqld(临时调试可用 setenforce 0,生产环境建议用 semanage permissive -a mysqld_t)
- 磁盘空间不足(/var/lib/mysql 至少预留 2GB)
安全初始化后必须处理的认证插件问题
mysql_secure_installation 能加固基础安全,但它**不会修改默认认证方式**。
- MySQL 8.0 默认使用 caching_sha2_password 插件,老客户端(如 Navicat Authentication plugin 'caching_sha2_password' cannot be loaded
- 解决方法不是降级插件,而是创建兼容用户:
CREATE USER 'appuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!';GRANT ALL ON *.* TO 'appuser'@'%';
- 或全局修改默认插件(不推荐):在 /etc/my.cnf 的 [mysqld] 下加一行 default_authentication_plugin=mysql_native_password,再重启 mysqld
临时密码只在首次启动日志里出现一次,服务重启不会重生成;mysql_secure_installation 运行后若忘记新密码,只能停服务、加 --skip-grant-tables 启动绕过验证,再手工更新 mysql.user 表——这个操作链容易锁死实例,务必提前备份。











