《Rocky Linux 9.6 部署 MySQL 8.0 生产手册(含错误处理)》

包含:

✔ 标准安装流程

✔ 遇到的 GPG 错误及解决

✔ root 无法登录问题

✔ 使用 skip-grant-tables 修复密码

✔ 全过程命令 + 解释

✔ 适合企业留档


适用于版本:

  • Rocky Linux 9.x
  • MySQL 8.0.39 / MySQL 8.0.44
  • 在线安装(推荐)

🧩 目录

  1. 环境准备
  2. 安装 MySQL 官方 YUM 源
  3. 导入官方 GPG Key(解决 GPG 签名错误)
  4. 安装 MySQL
  5. 启动并获取临时密码
  6. 登录 MySQL(理论情况)
  7. 登录失败错误排查(1045)
  8. 使用 systemd override 模式跳过授权表
  9. 重置 root 密码
  10. 恢复正常服务模式
  11. 验证 MySQL
  12. 常见问题 FAQ

1️⃣ 环境准备

Rocky Linux 9.6 系统,具有互联网访问环境。

bash 复制代码
dnf install -y wget vim

2️⃣ 安装 MySQL 官方 YUM 源

bash 复制代码
cd /tmp
wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
rpm -ivh mysql80-community-release-el9-1.noarch.rpm

查看仓库是否生效:

bash 复制代码
dnf repolist | grep mysql

应包含:

复制代码
mysql-connectors-community
mysql-tools-community
mysql80-community

3️⃣ 导入 MySQL 最新 GPG Key(关键步骤)

安装时出现的典型报错如下:

复制代码
Public key for mysql-community-client-8.0.44... is not installed.
Error: GPG check FAILED

这是因为 MySQL 从 2022/2023 起更换了 Key。

执行导入:

bash 复制代码
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

然后重新生成缓存:

bash 复制代码
dnf clean all
dnf makecache

4️⃣ 安装 MySQL(默认安装最新的 8.0.x)

bash 复制代码
dnf install -y mysql-community-server

如果需要指定版本 8.0.39:

bash 复制代码
dnf install -y mysql-community-server-8.0.39*

遇到 GPG 再报错可使用:

bash 复制代码
dnf install -y mysql-community-server --nogpgcheck

5️⃣ 启动 MySQL 并获取 root 临时密码

启动服务:

bash 复制代码
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld

查看临时密码:

bash 复制代码
grep 'temporary password' /var/log/mysqld.log

例如:

复制代码
A temporary password is generated for root@localhost: SBdJfRkht9.,

6️⃣ 理论情况下登录 MySQL

复制代码
mysql -u root -p

输入上述临时密码。


7️⃣ 登录失败错误排查(1045)

实际遇到错误如下(典型场景):

复制代码
ERROR 1045 (28000): Access denied for user 'root'@'localhost'

即使临时密码正确仍无法登录,需要进入 跳过权限表模式 修复 root 密码。


8️⃣ 进入 MySQL 跳过授权表模式(systemd override)

注意:MySQL 不允许通过 root 用户直接用 mysqld --skip-grant-tables 启动

必须通过 systemd 修改启动行为

8.1 停止 MySQL

bash 复制代码
systemctl stop mysqld

确保没有 mysqld:

bash 复制代码
ps -ef | grep mysqld

8.2 创建 override.conf

bash 复制代码
mkdir -p /etc/systemd/system/mysqld.service.d
vim /etc/systemd/system/mysqld.service.d/override.conf

写入以下内容:

复制代码
[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

保存退出:

复制代码
:wq

8.3 重新加载 systemd

bash 复制代码
systemctl daemon-reload
systemctl restart mysqld

9️⃣ 无密码登录并修改 root 密码

现在可以无密码登录:

bash 复制代码
mysql -u root

进入后执行:

sql 复制代码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456!';

退出:

sql 复制代码
exit;

🔟 恢复 MySQL 正常模式

删除 override 文件:

bash 复制代码
rm -f /etc/systemd/system/mysqld.service.d/override.conf
systemctl daemon-reload
systemctl restart mysqld

1️⃣1️⃣ 使用新密码登录验证

bash 复制代码
mysql -u root -p

输入:

复制代码
Root@123456!

登录成功则表示修复完成。


1️⃣2️⃣ 常见问题 FAQ

✔ Q1:如何查看当前 MySQL 版本?

bash 复制代码
mysqld --version

✔ Q2:3306 是否监听?

bash 复制代码
ss -lntp | grep mysqld

✔ Q3:如何开启远程访问?

登录 MySQL:

sql 复制代码
CREATE USER 'root'@'%' IDENTIFIED BY 'Root@123456!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

✔ Q4:防火墙放通 3306

bash 复制代码
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

相关推荐
猫豆~5 小时前
LAMP项目部署——8day
linux·运维·服务器·centos
徐徐图之!5 小时前
二、开始我们的运维之路&运维学习路线
linux·运维·云计算
源宇宙十三站5 小时前
Linux故障诊断系列2-诊断系统启动问题&识别硬件故障
linux
semantist@语校6 小时前
第五十四篇|从事实字段到推理边界:名古屋国际外语学院Prompt生成中的过度推断防御设计
大数据·linux·服务器·人工智能·百度·语言模型·prompt
帝吃藕和6 小时前
MySQL 知识点复习- 6. inner/right/left join
mysql
dlhto6 小时前
Markdown转Word操作指南
linux·centos·word
徐子元竟然被占了!!6 小时前
Linux-chown
java·linux·运维
梦白.6 小时前
Python字符串类型
linux·python
小吴学不废Java6 小时前
MySQL慢查询日志分析
android·adb