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




