Windows下忘记MySQL root密码解决方法

时间:2021-06-09 16:08:41

Windows下忘记MySQL密码的解决办法网上好多好多,可是,我发现,如果采用Windows服务启动的时候,安装网上通过命令行修改root密码的方法行不通。

经过实验,发现,Windows的服务运行的配置并不是在命令行下的配置。
(查看Windows MYSQL服务的命令行如下)
Windows下忘记MySQL root密码解决方法
实际的运行路径配置文件路径为:ProgramData,不是程序目录

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56

那么,通过程序目录下配置文件来修改MySQL的密码并不能对服务启动的MySQL密码生效,从目录的数据可以看出,数据库的位置是不同的,Windows服务启动的数据库目录在ProgramData下,所以,我们通过程序目录下修改密码是,是修改了程序目录的数据库,而没有修改服务程序下的数据库,导致了修改密码,却不能成功。

Windows下修改MySQL root密码的正确姿势为:

  1. 找到MySQL启动的配置文件路径
  2. 在运行的配置文件中,mysqld节下面添加skip-grant-tables参数,如果确认配置文件路径,也可以采用命令行的参数指定方式。
    • 通过Windows服务的命令行参数(见前面图),找到配置文件位置,修改配置文件,再重启MySQL服务
    • 通过Windows服务的命令行参数(见前面图),找到配置文件位置,通过命令行指定参数如下命令运行(运行前,手动关闭MySQL服务):

      mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini" --console --skip-grant-tables

      这里,需要注意defaults-file使用服务启动的路径中的配置文件。
  3. 用MySQL命令行修改root密码
    mysql -uroot -p
    出现:
    Enter password:
    在这里直接回车,不用输入密码。
    然后就就会出现登录成功的信息,
    修改root密码:
use mysql;
UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
FLUSH PRIVILEGES;
quit

重新登录:
mysql -uroot -p
出现输入密码提示,输入新的密码即可登录:
Enter password: *
显示登录信息: 成功 就一切ok了
(4)恢复配置参数,再启动MySQL