Windows下MySQL重置Root密码

停止mysql服务器

关掉mysql进程

配置不读取授权表启动

cmd运行不要用powershell,使用--skip-grant-tables

1
mysqld --skip-grant-tables=OFF --shared-memory --console

最好加上--console,把信息直接打到控制台,有报错的话能直接发现。之前直接启动会闪退,通过加上--console后发现需要配置--shared-memory

重新加载授权表

mysql客户端连接到服务器,并执行

1
2
host> mysql
mysql> FLUSH PRIVILEGES;

修改root账户密码

1
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

期间出现一个问题:

1
ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘

通过查询

1
2
mysql> use mysql;
mysql> select user,host from user;

发现

1
2
3
4
5
6
7
8
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
+------------------+-----------+

尝试变更了下语句,执行

1
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'MyNewPass';

成功。

重启服务器,尝试新的密码连接。

成功。