Windows下忘记MySQL密码的解决办法网上好多好多,可是,我发现,如果采用Windows服务启动的时候,安装网上通过命令行修改root密码的方法行不通。
经过实验,发现,Windows的服务运行的配置并不是在命令行下的配置。
(查看Windows MYSQL服务的命令行如下)
实际的运行路径配置文件路径为: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密码的正确姿势为:
- 找到MySQL启动的配置文件路径
- 在运行的配置文件中,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使用服务启动的路径中的配置文件。
- 用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