Access denied for user 'root'@'localhost' 密码错误情况

报错信息:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


可能情况:

  1. MySQL服务未启动;
  2. 访问端口不正确;
  3. 配置文件出现的错误;
  4. 远程登录权限不够;
  5. 密码错误无法登录;
  6. 其他情况。

这里讨论情况:由于密码错误导致的报错,输入密码错误或忘记密码情况;

拟完成的目标:通过重置密码,修改root用户密码;

测试环境:本地MySQL,MySQL_8.0,Window10,CMD

大致测试流程:

  • 关闭MySQL服务;
  • 设置跳过登录校验;
  • 直接无密码登录root;
  • 更新root密码为空;
  • 重新开启MySQL服务;
  • 通过root和空密码登录MySQL;
  • 修改root密码。

正式流程:

1. CMD命令行通过密码登录本地MySQL失败,这里考虑密码错误情况,或忘记密码情况

2. 停止本机MySQL服务,并跳过密码验证,这里为CMD窗口1

net stop mysql

mysqld --console --skip-grant-tables --shared-memory

3.保持上述窗口1,打开新的窗口2,进入mysql数据库(其user表存放登录信息)

mysql -uroot

use mysql

4. 进入mysql数据库,查找user表,查询主机,用户名,密码等信息,可以看到密码 authentication_string 列是加密的内容

select host,user,authentication_string from mysql.user;

5. 由于密码是加密存放,更新user表设置加密后的密码内容为空(注意这里不是设置新密码,设空即可),空密码在加密之后也是为空,可以反向推出新密码为空,再次查询user表信息变化

update mysql.user set authentication_string='' where user='root';

select host,user,authentication_string from mysql.user;

6. 通过Ctrl+C终止窗口1的跳过验证,并重启mysql服务

net start mysql

7. 然后可以打开使用任意的CMD窗口都行,直接无密码登录MySQL的root账号,密码为空

mysql -uroot

8. 通过命令修改root用户的密码即可,这里设置为 123456

alter user 'root'@'主机地址' identified by '新密码'

alter user 'root'@'localhost' identified by '123456'

9. 退出MySQL,尝试通过刚刚修改的账号密码登录 MySQL

通过root账号+密码登录成功,即密码重置成功!

posted @ 2022-06-02 13:53  a最简单  阅读(1186)  评论(0编辑  收藏  举报