官方RPM仓库安装最稳:先执行sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm启用仓库,再sudo dnf install mysql-community-server自动拉取依赖,启动后须查/var/log/mysqld.log获取临时root密码并运行mysql_secure_installation完成安全初始化,远程访问需改bind-address=0.0.0.0、开放3306端口且不可跳过安全配置。

直接装官方 RPM 仓库版最稳,别碰离线 tar.gz 包或第三方脚本——Rocky Linux 9 自带的 dnf 和 MySQL 官方 repo 兼容性好,初始化、服务管理、安全配置都走标准路径,出问题有明确日志可查。
用官方 MySQL 8.0 repo 安装
Rocky Linux 9 默认不带 MySQL,必须先加官方仓库。注意不是系统自带的 mysql80-community-release-el9-1,而是要指定 mysql80-community-release-el9-1.noarch.rpm 这个包名,否则 dnf 会找不到源:
- 运行
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm - 确认仓库启用:
sudo dnf repolist | grep mysql,应看到mysql80-community行且 enabled=1 - 执行
sudo dnf install mysql-community-server——它会自动拉取mysql-community-common、mysql-community-client等依赖,不用单独装
启动服务前必须处理临时 root 密码
MySQL 8.0 第一次启动会生成临时密码,写在 /var/log/mysqld.log 里。不看这个密码,mysql_secure_installation 会卡在登录环节,报错 Access denied for user 'root'@'localhost':
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 启动服务:
sudo systemctl start mysqld - 立刻查日志:
sudo grep 'temporary password' /var/log/mysqld.log,输出类似A temporary password is generated for root@localhost: aB3#xY9!mQ2 - 把这个密码复制下来,下一步
mysql_secure_installation时要用;输错三次就会锁住连接,得重启 mysqld 重试
远程访问必须改 bind-address 和开防火墙
默认 bind-address = 127.0.0.1,只允许本地连。改成 0.0.0.0 后,还得手动开防火墙端口,否则 telnet 或 mysql -h 都超时:
- 编辑
/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf,在[mysqld]段下加一行:bind-address = 0.0.0.0 - 重启服务:
sudo systemctl restart mysqld - 开放端口:
sudo firewall-cmd --permanent --add-port=3306/tcp,再sudo firewall-cmd --reload - 创建远程用户时,
'user'@'%'的%是通配符,但生产环境建议换成具体 IP,比如'user'@'192.168.1.100',避免暴露到公网
别跳过 mysql_secure_installation 的密码重置步骤
很多人以为改完配置文件、建了远程用户就完事了,结果发现 root 还是只能用临时密码连本地。这是因为 mysql_secure_installation 不仅删匿名用户、关 test 库,最关键的是它会把 root 密码从临时态转为永久态,并切换认证插件为 caching_sha2_password:
- 运行
sudo mysql_secure_installation - 第一步就要求输入刚才查到的临时密码
- 第二步会让你设新 root 密码(必须含大小写字母+数字+特殊字符,长度 ≥8)
- 后续选项按需选,但 “Remove anonymous users” 和 “Disallow root login remotely” 建议选 Y,安全基线不能妥协
真正容易被忽略的是:改完 bind-address 后没重启服务,或者开了防火墙但忘了 --reload;还有人把 mysql_secure_installation 当成可选步骤跳过,导致 root 密码始终是临时的,下次 mysqld 重启就失效。

















