You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

RedHat 6.8系统下全新安装MySQL 8后root用户连接数据库失败求助

解决MySQL 8 root用户连接"Access denied"问题(RedHat 6.8环境)

我来帮你搞定这个问题,这是MySQL 8全新安装后非常常见的初始连接坑,核心原因是MySQL 8的初始密码机制和旧版本不一样,咱们一步步来解决:

1. 先找到root用户的初始随机密码

通过yum安装MySQL 8后,系统会自动给root生成一个随机初始密码,存放在日志文件里,你可以用这条命令提取:

sudo grep 'temporary password' /var/log/mysqld.log

执行后会输出类似这样的内容:

2024-05-20T12:34:56.789012Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XyZ123!@#

这里的XyZ123!@#就是你的初始密码,一定要记下来。

2. 用初始密码登录并重置root密码

接下来用这个初始密码登录MySQL:

mysql -u root -p

输入刚才拿到的初始密码,登录成功后,必须先修改root密码(MySQL 8强制要求密码符合复杂度:至少8位,包含大小写字母、数字和特殊字符),执行这条SQL:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPass!123';
FLUSH PRIVILEGES;

YourNewStrongPass!123换成你自己的合规密码。

3. (可选)解决认证插件兼容问题

如果修改密码后还是连接失败,可能是因为MySQL 8默认给root用的caching_sha2_password认证插件,部分旧客户端不支持。你可以把认证插件改成兼容性更好的mysql_native_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourNewStrongPass!123';
FLUSH PRIVILEGES;

退出MySQL后,用新密码重新连接试试:

mysql -u root -p

额外小提醒

  • 你之前查服务状态的命令少了服务名,正确的应该是sudo service mysqld status(RHEL6.8里MySQL 8的服务名是mysqld,不是MySQL
  • 连接MySQL的标准命令是小写的mysql,虽然部分系统不区分大小写,但尽量用标准格式避免不必要的问题

按这个流程操作,你应该就能顺利用root连接数据库了。

内容的提问来源于stack exchange,提问作者Daniel Sasson

火山引擎 最新活动