MySQL忘记密码怎么办

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

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

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

图1 以管理员身份运行cmd

图2 关闭MySQL服务

图3 关闭MySQL服务成功

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

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

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

图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才能进入。

图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;

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

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

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

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

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

图9 服务器无法启动

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

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

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

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

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

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

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

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

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

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

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

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

  1. use mysql; !!!!!改密码之前的这一步别忘了!!!

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

参考文献

MySQL修改root用户密码

MySql 中的skip-grant-tables(跳过权限验证的问题)

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值