在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;
相关推荐
程序员小八7775 小时前
MySQL 事务:一文把 ACID、隔离级别、MVCC、锁全串起来
数据库·mysql
lzhdim5 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
ltl6 小时前
ClickHouse Distributed 引擎与分布式查询路由
数据库
Wang's Blog6 小时前
PostgreSQL笔记60: 权限与角色管理——从层级体系到最佳实践
数据库·笔记·postgresql
whcyhhh7 小时前
头歌实践教学平台:大数据存储2023(六)
大数据·数据库·python
Elastic 中国社区官方博客8 小时前
让大模型思考,让小模型执行:在 Elastic Workflows 中拆分 LLM 成本
大数据·运维·数据库·人工智能·elasticsearch·ai
Faith_xzc8 小时前
一条 SQL 顶一条 Flink 链路?Doris Streaming Job 持续导入全景解析
大数据·数据库·sql·flink
阮胜昌9 小时前
MySQL 中的动态数据脱敏:无需更改应用程序即可保护敏感数据
android·mysql·adb
小白说大模型10 小时前
AI驱动的个性化学习路径:知识图谱与知识点关联的存储与推理
大数据·人工智能·学习·mysql·机器学习·prompt·知识图谱
这个DBA有点耶11 小时前
多模数据库深度解读:从“多库拼装”到“一库多能”的架构演进
数据库·mysql·dba