最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何在Rocky Linux 9上安装MySQL 8.0
时间:2026-08-14 10:34:49 编辑:袖梨 来源:一聚教程网
最稳妥方式是使用MySQL最新仓库安装:先执行sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm添加el9适配仓库,再sudo dnf install mysql-community-server自动拉取依赖,启动后通过sudo grep 'temporary password' /var/log/mysqld.log获取初始root密码,并务必运行mysql_secure_installation加固。
直接用最新仓库安装最稳妥,别自己编译或瞎下tar包——Rocky Linux 9自带dnf和systemd,MySQL 8.0最新RPM包完全适配,装完就能跑,还能自动更新。
用最新MySQL仓库安装(推荐)
Rocky Linux 9默认源里没有MySQL 8.0,必须先加最新仓库。这步漏了,后面dnf install mysql-community-server会报“没有可用软件包”。
- 运行
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm——注意是el9,不是el8或el7,错一个版本号就装不上 - 确认仓库启用:检查
/etc/yum.repos.d/mysql-community.repo,确保[mysql80-community]下的enabled=1,而[mysql57-community]是enabled=0 - 执行
sudo dnf install mysql-community-server,它会自动拉取mysql-community-client、mysql-common等依赖,不用单独装
启动服务并获取初始root密码
MySQL 8.0首次启动会自动生成临时root密码,不找出来就登不进去,也别试空密码——8.0默认禁用空密码登录。
- 运行
sudo systemctl start mysqld启动服务,再执行sudo systemctl enable mysqld开机自启 - 查日志拿密码:
sudo grep 'temporary password' /var/log/mysqld.log,输出类似A temporary password is generated for root@localhost: xxxxxxxx,后面那串就是临时密码 - 别跳过
mysql_secure_installation:它不只是改root密码,还会删匿名用户、禁远程root、关test库——跳过等于裸奔
配置远程访问(如果需要)
默认只监听127.0.0.1,外网连不上不是防火墙问题,而是MySQL压根没对外暴露端口。
- 编辑
/etc/my.cnf或/etc/my.cnf.d/mysql-server.cnf,找到bind-address行,改成bind-address = 0.0.0.0(或指定IP);没这行就手动加在[mysqld]段下 - 重启服务:
sudo systemctl restart mysqld,不重启配置不生效 - 创建远程用户时,
CREATE USER 'user'@'%'的%表示任意IP,生产环境强烈建议换成具体IP,比如'user'@'192.168.1.100' - 防火墙要放行:
sudo firewall-cmd --permanent --add-port=3306/tcp+sudo firewall-cmd --reload,否则即使MySQL开了,包也进不来
常见坑:glibc版本、SELinux和字符集
离线装tar包容易翻车,尤其glibc不匹配——Rocky Linux 9用的是glibc 2.34,但MySQL正式tar包里标“glibc 2.28”的那个其实也能跑,只是得手动初始化,还容易权限出错。
- 别用
mysqld --initialize-insecure,8.0默认要求强密码,用这个会导致后续ALTER USER报错 - SELinux开启时,
/var/lib/mysql目录上下文可能不对,启动失败看journalctl -u mysqld,出现Permission denied就执行sudo semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"+sudo restorecon -Rv /var/lib/mysql - 中文乱码?在
[mysqld]段加character-set-server = utf8mb4和collation-server = utf8mb4_unicode_ci,别用utf8(那是MySQL的假UTF-8)
真正麻烦的不是装上,而是装完立刻改密码、开远程、调字符集、关匿名用户——这四件事漏掉任何一项,接下来三天都在排查连不上或存不了中文。