You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MySQL 8.0+ root用户重置密码后登录遇权限拒绝错误求助

解决MySQL root用户重置密码后登录失败的问题

首先得说,你之前执行的重置密码命令有个关键疏漏——没指定要更新的表!正确的操作应该针对mysql库下的user表,而且改完密码必须刷新权限才能生效。另外,登录时出现Access denied for user 'root'@'localhost' (using password: NO),大概率是命令格式错了,或者密码根本没被正确设置上。

下面给你一步步的修复流程:

1. 先停止MySQL服务

根据你的操作系统选对应的命令:

  • Linux/Ubuntu/Debian:
    sudo systemctl stop mysql
    
  • Windows(管理员权限命令提示符):
    net stop mysql
    

2. 以跳过权限验证的方式启动MySQL

这样能让你不用密码直接登录,方便重新设置密码:

  • Linux/Ubuntu/Debian:
    sudo mysqld_safe --skip-grant-tables &
    
  • Windows:
    先切换到MySQL安装目录的bin文件夹(比如C:\Program Files\MySQL\MySQL Server 8.0\bin),再运行:
    mysqld --skip-grant-tables
    

3. 无密码登录MySQL

打开新的终端/命令提示符窗口,直接运行:

mysql -u root

这时候应该能顺利进入MySQL命令行。

4. 正确重置root密码

注意MySQL版本差异,命令不一样:

如果你用的是MySQL 5.x版本

USE mysql;
UPDATE user SET authentication_string = PASSWORD('你的新密码') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

如果你用的是MySQL 8.0及以上版本

PASSWORD()函数已经被弃用,推荐用更规范的ALTER USER命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;

要是ALTER USER报错(跳过权限启动时偶尔会出现),可以先清空旧密码再设置:

USE mysql;
UPDATE user SET authentication_string = '' WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

5. 重启MySQL服务

先关掉刚才跳过权限启动的MySQL进程,再正常启动服务:

  • Linux/Ubuntu/Debian:
    sudo systemctl start mysql
    
  • Windows:
    net start mysql
    

6. 正确登录MySQL

这里要注意命令格式,别再踩坑:

  • 方式1:-p和密码直接连在一起(无空格):
    mysql -u root -p你的新密码
    
  • 方式2:-p后不写密码,回车后输入(更安全,避免密码留在命令历史里):
    mysql -u root -p
    
    然后按提示输入密码就行。

补充一句:你之前出现using password: NO,很大可能是输入了mysql -u root -p password-ppassword之间有空格)——这时候MySQL会把password当成要连接的数据库名,而非密码,相当于你根本没输入密码,自然会报错。一定要注意-p和密码的格式!

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

火山引擎 最新活动