MySQL8.0忘记密码导致无法登录解决方案
安装MySQL后很久没有使用,近期因新系统开发需要建数据库,发现无法连接MySQL,在此记录解决问题的过程备忘。
操作系统:windows11
MySQL版本:MySQL 8.0.33
- 问题出现:用root账号登录数据库时出现如下提示信息:
Access denied for user 'root'@'localhost' (using password: YES) //提示使用密码登录,访问被拒绝
经过排查分析发现,MySQL服务启动正常、端口号正常,很大可能是因为用户密码错误。考虑跳过用户验证修改密码。查询各种解决方案,尝试多次后,发现没有能够解决问题的完整方案,总结各个方案可用的部分,尝试后,成功修改密码,具体过程如下:
1、已管理员身份启动CMD,输入如下命令,停止MySQL服务
C:\Windows\System32>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。
2、修改MySQL安装目录下的my.ini文件,在[mysqld]下添加skip-grant-tables,添加后如下:
[mysqld]
skip-grant-tables
...
3、输入如下命令,重新启动MySQL服务
C:\Windows\System32>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
4、输入如下命令,跳过密码验证,登录MySQL
>mysql -u root
5、输入如下命令,将用户密码置空
mysql> update user set authentication_string="" where user="root";
Query OK, 1 row affected (0.01 sec)
6、输入如下命令,更新数据库
mysql> flush privileges
7、输入如下命令,设置新密码(root@localhost没有单引号,网上很多解决方案给了单引号,命令执行会失败,提示语法错误)
mysql> alter user root@localhost identified by "112358";
Query OK, 0 rows affected (0.00 sec)
8、再次输入如下命令,更新数据库
mysql> flush privileges
9、退出数据库
mysql> quit
Bye
10、按照【步骤1】停止MySQL服务,删除my.ini文件中的skip-grant-tables
11、重新启动MySQL服务(命令参考同步骤3)
12、用新密码登录MySQL,成功
C:\Users\******>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.33 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>