《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

相关推荐
霖霖总总12 小时前
[小技巧66]当自增主键耗尽:MySQL 主键溢出问题深度解析与雪花算法替代方案
mysql·算法
HalvmånEver12 小时前
Linux:线程互斥
java·linux·运维
番茄灭世神13 小时前
Linux应用编程介绍
linux·嵌入式
wdfk_prog13 小时前
[Linux]学习笔记系列 -- [drivers][mmc][mmc_sdio]
linux·笔记·学习
Forsete13 小时前
LINUX驱动开发#9——定时器
linux·驱动开发·单片机
森G13 小时前
七、04ledc-sdk--------makefile有变化
linux·c语言·arm开发·c++·ubuntu
驱动探索者13 小时前
linux mailbox 学习
linux·学习·算法
海奥华214 小时前
mysql索引
数据库·mysql
酉鬼女又兒14 小时前
每天一个Linux命令_printf
linux·运维·服务器
Trouvaille ~15 小时前
TCP Socket编程实战(三):线程池优化与TCP编程最佳实践
linux·运维·服务器·网络·c++·网络协议·tcp/ip