忘记密码后重置密码!全网最全保姆级教程!
我的MySQL版本是8.0.37,仅供参考。
关闭MySQL服务
两种方案:
方案1:右键单击此电脑>管理>服务,找到
这个MySQL80,右键手动停止服务(MySQL版本不同,后面的数字会不一样)。
方案2:打开命令提示符(cmd)并输入以下命令。
net stop mysql
跳过权限表
Windows找到MySQL下载目录,一般在C:\Program Files\MySQL\MySQL Server 8.0\bin。在该目录使用管理员权限打开命令提示符。在cmd窗口输入
mysqld --skip-grant-tables
跳过权限表。如果没有ERROR字样直接下一步,如果出现
Can't create test file C:\Program Files\MySQL\MySQL Server 8.0\data\mysqld_tmp_file_case_insensitive_test.lower-test
Failed to set datadir to 'C:\Program Files\MySQL\MySQL Server 8.0\data\' (OS errno: 2 - No such file or directory)
则使用以下命令进行跳过:
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory
(文件路径即你的my.ini存储路径,如有不同请自行替换)
一般这一步就能成功跳过(帖主到这里已经成功,没有后续尝试),此时千万不要关闭该命令行窗口(关闭的请按上述步骤重新打开)
启动MySQL并修改密码
不要关闭上述步骤的cmd窗口,使用管理员权限再打开一个cmd窗口,此处在当前目录即可,不用cd到其他目录下。
启动数据库
mysql -u root
(此时不需要输密码,如果需要输密码,可能是上一步跳过权限表失败,需要重新跳过)
连接数据库
use mysql
查看user主机名
select user, host from user;
此处,有的root的对应的host名为%,后续也会提到。
刷新执行指令
flush privileges
修改密码
如果你的root对应的是localhost,输入
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123’;
如果你的root对应的是%,输入
ALTER USER ‘root’@‘%’ IDENTIFIED BY ‘123’;
密码修改成功!新密码为123(此处可以在123处重置为任何你想改的密码)
如果上述方法仍不能修改,请看这里
1)再次查看 mysql 数据库中 user 表的 plugin 字段:
mysql> select user, host, plugin from user;
2)如果发现 root 用户是 caching_sha2_password 的插件,而不是 mysql_native_password 插件,可以把它改成 mysql_native_password 插件。
mysql> update user set plugin=‘mysql_native_password’ where user=‘root’;
把用户root对应的%改为localhost
update user set host=‘localhost’ where host=‘%’ and user=‘root’;
验证
关闭上述两个cmd窗口,使用管理员权限重新打开一个cmd窗口,输入mysql -u root -p
回车,然后输入刚刚修改的密码,出现welcome即为登录成功。