mysql数据库忘记密码解决方案

步骤一.停止mysql服务

以管理员身份运行cmd–>输入命令 net stop mysql的服务名
在这里插入图片描述

步骤二.设置无验证方式启动mysql服务

mysql版本为8.0以下,输入mysqld --skip-grant-tables
mysql版本为8.0以上,输入mysqld --console --skip-grant-tables --shared-memory
看到光标一直闪烁就成功了,进行步骤三
注意:如果遇到mysqld: Can’t change dir to ‘C:\Program Files\MySQL\MySQL Server 8.0\data’ (OS errno 2 - No such file or directory)错误
在这里插入图片描述解决方案:勾选显示隐藏的项目,找到ProgramData文件夹,在C:\ProgramData\MySQL\MySQL Server 8.0路径下找到my.ini文件,复制粘贴到C:\Program Files\MySQL\MySQL Server 8.0目录下即可
在这里插入图片描述复制粘贴完毕后,重新输入mysqld --console --skip-grant-tables --shared-memory,看到此信息且光标闪烁问题就解决了
在这里插入图片描述

步骤三.无验证登陆数据库+修改密码

重新打开一个cmd窗口,输入mysql,敲回车就可以成功登陆mysql了
在这里插入图片描述
接下来修改密码
————如果mysql版本为5.7以下,有两种SQL语句都可以修改密码,任选其一即可
用户名一般为root,主机名为localhost

USE mysql;
方式一
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
方式二
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

————如果mysql版本为5.7以上、8.0以下(如果此方法没成功,就用8.0以上的方法继续),user表已经没有password这个字段了,password字段改成了 authentication_string,所以要执行的SQL语句为

USE mysql;
UPDATE user set authentication_string=PASSWORD('新密码') WHERE user='用户名';
flush privileges;

————如果mysql版本为8.0以上,mysql移除了PASSWORD()加密函数,不知道用的是什么鬼加密算法,所以这里是将authentication_string先置空

use mysql;
update user set authentication_string='' where user='用户名';

在这里插入图片描述

步骤四 关闭cmd窗口及进程

关闭两个cmd窗口,然后启动任务管理器(ctrl+alt+delete),手动结束进程中的mysqld.exe,如果没有找到mysqld则直接进入步骤五
在这里插入图片描述

步骤五 启动服务,使用新密码登陆mysql

如果mysql版本为8.0以下,以管理员身份运行cmd–>输入命令 net start mysql的服务名,然后输入命令 mysql -uroot -p新密码,按回车,登陆成功,所有步骤结束
如果mysql版本为8.0以上,以管理员身份运行cmd–>输入命令 net start mysql的服务名,启动服务后,因为密码之前置空了,所以这里输入命令 mysql -uroot -p 回车两次
在这里插入图片描述
下面开始修改密码,输入以下命令即可

 alter user '用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; 
 flush privileges;

在这里插入图片描述
此时密码已经修改完毕,登陆mysql

在这里插入图片描述可以看到成功登陆上mysql了,到这里终于结束了

总结:排除了各种错误终于整理完毕,推荐下载5.5-5.7版本之间的MySQL,
除了这种修改用户密码方式,还可以选择先创建一个用户,然后进行操作之类的,可能要方便一些

猜你喜欢

转载自blog.csdn.net/a347635191/article/details/97617790