Windows下MySQL5.7 root 密码重置

时间:2022-07-03 15:37:09

MySQL数据库长时间未使用,密码难免会忘记。像我这样七秒钟记忆的人密码都要拿个小本本记下来的!

如果不幸没有备份怎么办呢? 就照着下面的方法重置吧,不要问我怎么知道的。。。。

版本号:5.7.21

在网上也看了一些方法,各个版本会有些差别。

比如重置密码时候的字段password,这个版本的MySQL里面user注册表是没有password字段的,而是存在authentication_string下。执行时多注意下报错信息就可以大概看出来不可行的地方在哪里了。

另外,在mysql server 5.7\bin文件夹下执行跳过注册表登录时,会出现找不到Data文件夹的报错。这是因为Data文件夹跟安装目录并没有放在相同路径,而是放在了默认路径  C:\ programdata\mysql\mysql server 5.7下。因此,执行时还需要设置查找的路径。my.ini的配置文件也放在这个下面。

操作步骤如下:

1. 找到配置文件my.ini, 右键点击编辑打开。找到mysqld块,在后面添加语句允许跳过注册表,这样不用密码就可以登录。

#skip the password
skip_grant_tables

2. 关闭mysql服务,在安装目录c:\program files\mysql\mysql server 5.7\bin文件夹下shift+右键选择打开命令行窗口,跳过注册表来启动server。命令行:

mysqld --defaults-file="c:\programdata\mysql\mysql server 5.7\my.ini"  --console  --skip_grant_tables
3. 再在该路径下重新打开一个DOS,登录MySQL

mysql -u root -p

按eter后,不用输入密码,直接再次enter进入mysql

4.  看下当前用户,应该是无权限用户:

mysql> select current_user();     

 使用mysql空间:

mysql> use mysql;  

修改root用户密码:

  mysql> update user set authentication_string = password("1234") where user="root" 

执行后会提示一行已修改。然后刷新下表中数据。

 mysql> flush privileges;  

修改完毕,退出MySQL环境:

 mysql> quit;  
5. 回到 my.ini 配置文件,将修改过的内容恢复原状
6. 重新打开mysql登录试试看,已经可以用新密码1234登录了。