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

Ubuntu 20.04新装后MySQL root用户无法连接及密码修改失败问题求助

解决Ubuntu 20.04下MySQL 8.0.22 root用户密码重置问题

我帮你梳理下问题原因和解决步骤,这两个报错都是MySQL 8.0的权限机制变化导致的,咱们一步步来搞定:

为什么你会遇到这两个错误?

  1. 第一个语法错误:MySQL 8.0已经彻底移除了PASSWORD()函数,所以你用这个函数来设置密码肯定会报错;而且直接修改user表的authentication_string字段也需要匹配MySQL 8.0的加密规则,不如用官方推荐的方式更稳妥。
  2. 第二个权限错误:当MySQL以--skip-grant-tables模式启动时,系统不会加载权限表,所以ALTER USER这类依赖权限表的命令根本无法执行,必须先手动刷新权限表才行。

正确的密码重置步骤

1. 停止当前运行的MySQL服务

如果你是用mysqld_safe启动的,先杀掉对应的进程:

sudo pkill mysqld_safe
sudo pkill mysqld

或者用系统服务命令停止:

sudo systemctl stop mysql

2. 启动MySQL并跳过权限验证和网络连接

sudo mysqld_safe --skip-grant-tables --skip-networking &

加--skip-networking是为了防止重置过程中被外部连接干扰,更安全。

3. 无密码登录MySQL

mysql -u root

因为跳过了权限验证,这里直接就能进入MySQL命令行。

4. 刷新权限表

这一步是关键!只有刷新权限表后,才能执行ALTER USER命令:

FLUSH PRIVILEGES;

5. 修改root用户密码

如果你想设置密码认证(推荐),执行下面的语句,把your_new_password换成你想要的密码:

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

注意:Ubuntu默认安装的MySQL 8.0,root用户可能用的是auth_socket插件(通过本地socket认证,不需要密码),所以加上WITH mysql_native_password可以强制切换为密码认证,方便后续用密码登录。

如果非要设置空密码(不推荐,不安全),可以先关闭空密码限制:

SET GLOBAL sql_mode = '';
ALTER USER 'root'@'localhost' IDENTIFIED BY '';

6. 重启MySQL服务

先退出MySQL命令行(输入exit;),然后停止mysqld_safe进程:

sudo pkill mysqld_safe
sudo pkill mysqld

再用正常方式启动服务:

sudo systemctl start mysql

7. 验证登录

现在用新密码登录试试:

mysql -u root -p

输入你刚才设置的密码,应该就能正常进入了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:22:35