场景:mysql版本是8,安装完成修改root密码,或是长时间没用忘记root密码,服务名为:mysql。

1、关闭mysql服务,net stop mysql。

2、跳过root密码验证进行登录。管理员模式打开cmd命令窗口,输入:

mysqld --console --skip-grant-tables --shared-memory

如下图:

绕过mysql 等录密码 mysql跳过密码验证修改密码_mysql

3、置空root原密码。

①、跳过root账户密码校验,连接mysql。当前cmd窗口不关闭也不做其他操作,管理员模式打开新的cmd命令窗口,输入:mysql -uroot -p ,然后回车,提示输入密码。上一步操作中已经跳过了root密码校验,此时直接回车即可,然后进入mysql中,如下图:

绕过mysql 等录密码 mysql跳过密码验证修改密码_绕过mysql 等录密码_02

②、还是当前新cmd命令窗口下,进入操作mysql数据库的模式,命令:use mysql;

③、置空root用户的校验字符串(可以理解为root用户的登陆密码),命令:

update user set authentication_string=‘’ where user=‘root’;

④、查看root用户的校验字符串是否被置空,root用户的authentication_string字段为空,则说明root校验字符串已被置空,查看命令:select user, authentication_string from mysql.user;

绕过mysql 等录密码 mysql跳过密码验证修改密码_数据库_03

⑤、保存刷新此置空操作,命令: flush privileges;

绕过mysql 等录密码 mysql跳过密码验证修改密码_数据库_04


4、root用户设置新密码

①、关闭刚才的两个cmd命令窗口,管理员模式打开新的cmd命令窗口,启动mysql服务,命令:net start mysql

②、root用户登陆mysql,出现的密码输入提示不用管,直接回车,命令:mysql -uroot -p

绕过mysql 等录密码 mysql跳过密码验证修改密码_绕过mysql 等录密码_05

③、进入操作mysql数据库的模式,命令:use mysql;

④、设置新密码,命令:

alter user ‘root’@‘localhost’ identified by ‘新密码’;

⑤、查看root用户的校验字符串插入是否操作成功,命令:

select user, authentication_string from mysql.user;

绕过mysql 等录密码 mysql跳过密码验证修改密码_服务器_06

⑥、刷新保存当前操作,命令:flush privileges;
⑦、退出mysql操作空间,命令:exit
⑧、重启mysql服务,到此为止,root用户密码就重置成功了。可以用工具连接,或新开个cmd命令窗口测试下。

备注:
1、因为跳过密码连接mysql数据库的命令导致无法立即赋值,因此才需要关闭了操作之后再进行设定root密码。
2、在mysql8.0以及以上版本中,update mysql.user set password=‘新密码’ where user=‘root’;和update mysql.user set password=PASSWORD(‘新密码’) where User=‘root’; 等一些命令已经不允许再使用。