You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04 EC2实例中MySQL 8.0 root用户密码登录失效问题求助

解决Ubuntu 20.04上MySQL 8.0 root用户密码设置无效问题

我来帮你理清问题的根源和解决步骤,你遇到的情况其实是Ubuntu系统下MySQL 8.0的默认配置导致的:

问题根源

Ubuntu 20.04上安装的MySQL 8.0,默认给root@localhost用户配置了auth_socket认证插件。这个插件的逻辑是只允许本地系统的root用户(也就是通过sudo切换的用户)通过Unix套接字连接MySQL,完全忽略密码验证——这就是为什么你输入错误密码甚至直接sudo mysql都能登录的原因。

你之前尝试的ALTER USER命令没生效,是因为没有修改认证插件,auth_socket依然在起作用;而直接修改mysql.user表时用的PASSWORD()函数,在MySQL 8.0里已经被移除了,所以会触发语法错误。

正确解决步骤

1. 登录MySQL

先通过默认方式登录(因为现在还能这么操作):

sudo mysql

2. 查看当前root用户的认证插件

执行以下SQL确认当前插件:

SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

你会看到root@localhost的plugin列是auth_socket,和你补充的信息一致。

3. 修改认证插件并设置密码

执行这条SQL,把认证插件改为MySQL 8.0推荐的caching_sha2_password,同时设置你的密码(把your_strong_password换成你要设置的密码):

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your_strong_password';

如果你需要兼容旧客户端(比如某些不支持caching_sha2_password的工具),也可以改用mysql_native_password:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';

4. 刷新权限

让配置生效:

FLUSH PRIVILEGES;

5. 测试登录

退出MySQL:

EXIT;

现在尝试用普通方式登录,输入你设置的密码:

mysql -u root -p

这时候应该需要正确密码才能登录,而且sudo mysql也会要求输入密码(因为认证插件已经改成需要密码验证的类型了)。

为什么你之前的操作无效?

  • 单纯执行ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORD';:没有指定认证插件的情况下,MySQL可能不会自动替换掉auth_socket,所以auth_socket依然优先生效,密码设置等于没起作用。
  • 执行UPDATE mysql.user SET authentication_string=PASSWORD('NEW_USER_PASSWORD') ...:MySQL 8.0已经移除了PASSWORD()函数,改用ALTER USER命令来设置密码才是官方推荐的正确方式,直接修改用户表容易出现权限同步问题。

内容的提问来源于stack exchange,提问作者Aditya Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 08:38:13