在Cent上安装Mysql 8.0的遇到的问题和解决办法

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;
相关推荐
写后端的胖头鱼15 分钟前
【高频面试题】FullText 全文索引(MySQL)
数据库·mysql·索引·全文索引
路远的数据库笔记31 分钟前
SQL Server迁移国产数据库怎么做?九套口岸库零停机割接实战
数据库·经验分享·sqlserver·dba
樱花落木兰33 分钟前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
kaiyou20261 小时前
用户研究岗秋招,统计分析能力怎么学习和证明?
数据库·python·学习
mjhcsp1 小时前
DeepSeek V4.1 Flash 批量处理效能实测
java·前端·数据库
ShineWinsu1 小时前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset
lie..1 小时前
30天从零开始学AI应用开发(Day 17):ChromaDB 上手:给本地文档建一个“外挂大脑”
数据库·人工智能·oracle
code_whiter2 小时前
01-MySQL数据库基础
数据库·mysql
weixin_382395232 小时前
本地部署 ERP 选型记录:从 Excel 到轻量系统的这几年
数据库·人工智能·数据挖掘
2401_891409263 小时前
期货量化用得上的几类行情数据:逐笔、Level2、分钟线和五档tick
数据库