1,安装错误:从 GPG 错误到 root 恢复
The GPG keys listed for the "MySQL 8.0 Community Server" repository are already installed but they are not correct for this package.
导入官方最新 GPG 密钥即可:
bash
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
如果由于缓存或插件问题依然报错,可临时跳过校验完成安装( 我用的是这个解决的然后重新安装):
bash
yum --disableplugin=fastestmirror --nogpgcheck install -y mysql-community-server
其中 --nogpgcheck 只是应急措施。生产环境建议导入密钥后正常安装,不要长期关闭签名校验。
2 获取初始化密码:
查看临时密码:安装完成后,系统会自动生成一个随机临时密码。执行以下命令查看:
bash
sudo grep 'temporary password' /var/log/mysqld.log
运行安全脚本:使用上一步获取的密码登录,并进行安全初始化:
bash
sudo mysql_secure_installation
按照提示依次完成修改 root 密码、移除匿名用户、禁止 root 远程登录、删除测试数据库等操。
3 防火墙和密码修改
创建远程用户并授权:
登录 MySQL (mysql -u root -p) 后执行:
sql
bash
CREATE USER 'username'@'%' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
FLUSH PRIVILEGES;
开放防火墙端口:
bash
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload1
第一步:停止 MySQL 服务
在修改配置前,需要先停止当前正在运行的 MySQL 服务:
bash
sudo systemctl stop mysqld
第二步:开启免密登录模式
编辑 MySQL 的配置文件(通常为 /etc/my.cnf),在 mysqld 这一行的下方添加 skip-grant-tables 参数2。保存文件后,重启 MySQL 服务:
bash
sudo systemctl start mysqld
第三步:无密码登录并重置密码
此时您可以直接通过以下命令免密进入 MySQL 命令行:
bash
mysql -u root
成功进入后,依次执行以下 SQL 语句(注意:MySQL 8.0 及以上版本必须使用 ALTER USER 语法):
bash
-- 刷新权限缓存,防止后续操作报错
FLUSH PRIVILEGES;
-- 将密码重置为您设定的新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
-- 再次刷新权限使更改生效
FLUSH PRIVILEGES;
第四步:恢复正常登录模式
密码重置成功后,需要关闭免密模式以保障数据库安全:
重新编辑配置文件 /etc/my.cnf,删除或注释掉刚才添加的 skip-grant-tables。
重启 MySQL 服务:
bash
sudo systemctl restart mysqld
随后即可使用新密码正常登录:mysql -u root -p。
💡 进阶排查:如果重置密码后依然报错
如果您确认密码正确,但仍提示 1045 错误,很可能是认证插件不兼容导致的。MySQL 8.0 默认使用 caching_sha2_password 插件,部分旧版客户端可能无法正确处理该认证方式4。
您可以尝试将 root 用户的认证方式切换为兼容性更好的传统模式。登录 MySQL 后执行:
bash
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
FLUSH PRIVILEGES;