在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;
相关推荐
Nturmoils3 小时前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
渣波7 小时前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
Jim6001 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL1 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql
倔强的石头_1 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
倔强的石头_4 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
云技纵横4 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
沉默王二4 天前
面试官:RAG 不用向量数据库,用 MySQL 硬扛?我:100 万向量不是很轻松?
mysql·面试·ai编程
冬奇Lab5 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm