因为很久没用MySQL了,今天在登录mysql的时候忘记了密码,于是找来了网上的教程,直接上结果——解决!

当然,在重置密码的时候还是除了点问题,希望我的帖子能对正在碰到相同问题的你给与帮助。

第一步:需要暂停mysql服务,net stop mysql。这里注意需要使用win+R,然后输入cmd,以管理员身份运行cmd。




mysql密码忘了怎么查看 mysql密码忘记了怎么找回_MySQL


图1 以管理员身份运行cmd


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_Powered by 金山文档_02


图2 关闭MySQL服务


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_mysql密码忘了怎么查看_03


图3 关闭MySQL服务成功

在如果遇到图二的状况,则需要你来到Mysql的安装路径下的bin文件,点击进入,然后复制路径。然后同样的使用管理员身份运行cmd。然后进入复制的路径,然后输入mysqld --install,然后再输入net stop mysql。


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_mysql密码忘了怎么查看_04


图4 复制MySQL的安装路径的bin


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_启动服务_05


图5 进入MySQL的安装路径的bin


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_mysql密码忘了怎么查看_06


图6 将MySQL注册到win服务里

出现图二的状况的原因是:因为net start +服务名,启动的是win下注册的服务。此时,系统中并没有注册mysql到服务中。即当前路径下没有mysql服务。到此我们就解决了图二的问题,重新从图一开始操作就可以成功的进入图三了。

第二步:我们检查MySQL的mysql.ini配置文件里,是否配置了跳过验证。如果没有则手动在[mysqld]后面自己添加进去一条skip_grant_tables。

然后我们在cmd命令行接着输入 mysqld --skip-grant-tables,则可以跳过跳过验证,然后重开一个cmd管理员命令,重新输入mysql -u root -p就可以直接按回车登录进去了。

在这里我们注意如果你的版本是MySQL8.0以后的版本,那么可能会报错,此时当前命令不可用,应该将mysql --skip-grant-tables改为mysqld --console --skip-grant-tables --shared-memory,此时再另外一个cmd窗口输入 mysql -u root -p,然后密码直接输入root就可以登录mysql的命令行了。

这两部的区别就是前者直接回车,后者需要输入root才能进入。


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_MySQL_07


图7 使用root登录成功

切换到mysql:

use mysql;

把密码置空:

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

刷新权限:

flush privileges;

设置加密规则并更新新密码,授权(直接复制这些SQL语句你的密码会更新为123456)

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

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

grant all privileges on *.* to "root"@'localhost';

flush privileges;

退出

exit;


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_mysql_08


图8 重现设置新密码,退出

------------------------废话分割线,赶时间可以不用看--------------------

然后重新启动服务net start mysql。会发现启动不了,报错。那么恭喜你,我也遇到了,并且还很麻烦卡在这里俩小时(吃饭去了)

而且之前的一步操作是(我们在cmd命令行接着输入 mysqld --skip-grant-tables,则可以跳过跳过验证,然后重开一个cmd管理员命令)。

那么我们到这步可以发现,那个最开始的cmd没有被关闭的时候,我们是无法重新启动服务的,也就是net start mysql会告诉你服务没有报告任何错误且服务器无法启动。


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_Powered by 金山文档_09


图9 服务器无法启动

但是直接忽略启动服务器这一步,直接mysql -u root -p 然后输入新设置的密码发现登录进去了。


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_MySQL_10


图10 在没有将最开始的cmd关掉时,直接可以使用修改后的密码登录

这时候你就算再新开一个cmd发现也是可以登录新设置的密码进入的,前提是,你最开始的那个记录有mysqld --skip-grant-tables的cmd没有关闭。一旦关闭,还是会再登录密码那里报错,但是你发现又可以启动服务了。神奇!然并卵.............我们的目标是启动服务并且使用更改的密码可以进入。这一步我也是各种百度才搞到的,珍惜吧家人们!!!

--------------废话分割线结束,赶时间直接从这里开始看--------------------

第三步:把mysql.ini配置文件里刚手动在[mysqld]后面自己添加进去的skip_grant_tables打上注释或者删除,退出保存。


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_Powered by 金山文档_11


图11 注释掉跳过验证的代码

第四步:然后再重启服务net start mysql,会发现可以启动服务了。而且输入密码也可以,正常使用已经修改的密码了。


mysql密码忘了怎么查看 mysql密码忘记了怎么找回_MySQL_12


图12 服务启动成功,新密码登录成功

好了,经过了这么一番操作之后,如果我们还是把密码在不久的将来忘了,那么之后就不用这么麻烦了。跟着下面走一次就ok了。

可以先去配置文件里把注释的那行代码重新打开,然后保存。

  1. 找到mysql的bin文件下,复制地址。然后打开cmd管理员模式进入该地址。

暂停服务,net stop mysql!!!然后用那两种代码选一种跳过验证,然后重开一个cmd管理员命令,重新输入mysql -uroot -p不需要密码回车进入。第二种是需要输入root就可以直接登录进去了。

  1. use mysql; !!!!!改密码之前的这一步别忘了!!!
  2. 改完密码退出之后,别急着启动服务,先去把配置文件里的跳过验证那个代码注释掉,然后保存配置文件。接下来就是使用net start mysql 启动服务,然后mysql -uroot -p ,输出你更改后的密码。就成功了!