《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

相关推荐
木白CPP几秒前
DMA-Buffer内核驱动API文档
linux
数据知道1 分钟前
claw-code 源码分析:OmX `$team` / `$ralph`——把 AI 辅助开发从偶发灵感变成可重复流水线
数据库·人工智能·mysql·ai·claude code·claw code
__土块__6 分钟前
大厂后端一面模拟:从线程安全到分布式缓存的连环追问
jvm·redis·mysql·spring·java面试·concurrenthashmap·大厂后端
HXQ_晴天20 分钟前
Linux 系统的交互式进程监控工具htop
linux·服务器·网络
做个文艺程序员34 分钟前
深入 MySQL 内核:MVCC、Buffer Pool 与高并发场景下的极限调优
数据库·mysql·adb
song85838 分钟前
韦东山开发手册阅读笔记(五)
linux
LIZhang201643 分钟前
linux写一个脚本实时保存内存占用情况
linux·运维·服务器
IDC02-阿杰1 小时前
Windows WSL2安装Ubuntu24.04全攻略
linux·windows
数厘1 小时前
2.4MySQL安装配置指南(电商数据分析专用)
数据库·mysql·数据分析
s09071361 小时前
ZYNQ7000 AXI DMA 接收中断(S2MM_introut)全解析:从硬件原理到Linux驱动开发
linux·驱动开发·dma·zynq