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登录了。