1.关闭MySQL服务
以管理员身份运行,在控制台执行net stop mysql
,关闭MySQL服务
2.跳过授权表
执行mysqld --console --skip-grant-tables --shared-memory
3.免密登录
另外打开一个cmd端口,先前的窗口先不关,执行mysql -u root -p
,提示输入密码,直接回车即可
4.修改root密码为空
再执行use mysql
,再执行UPDATE mysql.user SET authentication_string= '' WHERE user="root";
将密码设置为空
select host,user,authentication_string from mysql.user;
这里要注意的是用户表中有时候会把root的host设置为0.0.0.0,如果上图中root用户的host是
0.0.0.0
,这时候就需要多一步操作,执行UPDATE mysql.user SET host= 'localhost' WHERE user="root";
5.启动MySQL服务,登录并更改密码
关闭第2步打开的cmd端口(执行过mysqld --console --skip-grant-tables --shared-memory的窗口),执行net start mysql
,再执行mysql -u root -p
,直接回车,执行ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
执行完后退出
6.登录验证
如图所示,密码修改成功