MySQL服务的root密码强行重置

字号+ 编辑: 种花家 修订: 种花家 来源: 原创 2024-04-02 我要说两句(1)

动不动就忘了root密码是一件令人无比头疼的事情,MySQL官方已经为健忘的管理员准备了很好的后门来解决这个问题。

可以使用这个方法来找回丢失mysql超级管理员root的密码。

1、停止mysql服务

net stop mysql
# 或者service mysqld stop

如果数据不重要, 你用任何手段杀掉mysql进程也行

2、进MYSQL的bin目录来敲命令进入mysql安全模式

mysqld_safe --skip-grant-tables

当mysql安全模式起来之后, 不要关掉这个控制台, 再起一个黑窗口,不用输入密码就能进入数据库。命令为:

mysql -uroot -p

不用输入密码,直接按回车

sql命令开始修改root用户的密码

UPDATE mysql.user SET password=PASSWORD('新密码') WHERE USER='root';

3、刷新权限表

FLUSH privileges;

这样MYSQL超级管理员账号,ROOT已经重新设置好了,结束mysql相关进程(taskkill /IM)然后net start mysql
mysql重新启动后,就可以用新设置的root密码登录mysql了。

MySql8.x版本下强行重置密码

最开始还是老套路, 先开一个命令行界面, 来启动安全模式, 见上文2、进MYSQL的bin目录来敲命令进入mysql安全模式

之后我们要了解到新版mysql默认废除了password()函数, 改成了另外的玩法, 首先你要把user表里的authentication_string置空,然后通过alter语法修改密码。

update user set authentication_string='' where user='root';
mysql>ALTER user 'root'@'localhost' IDENTIFIED BY '新密码';

这个时候如果你是在安全模式强行重置密码的, 可能会遇到报错:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解决方法是使用下述语句刷一下权限再重置密码:

flush privileges;
mysql>ALTER user 'root'@'localhost' IDENTIFIED BY '新密码';

如果语句仍然执行失败, 试试前边的'localhost'有可能是'%', 这是根据你当前对root账号的IP适配范围来决定的。


阅完此文,您的感想如何?
  • 有用

    292

  • 没用

    31

  • 开心

    18

  • 愤怒

    9

  • 可怜

    6

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • 让Mysql查询后直接返回json字符串的方法

  • postgresql的pg_dump备份简单方法

  • 使用sql语句在MySQL库中去掉字段左边、右边指定字符串

  • 避免mysql全表扫描等影响性能的写法规则

我要说说
网上宾友点评
1 楼 IP 223.20.25.26 的嘉宾 normal : 1569139424
卧槽,终于找到个能用的了