在学习mybatis时,发现自己忘了mysql密码,于是找了教程修改密码。
重置密码流程如下:
停止mysql服务。管理员权限运行命令行输入 net stop mysql 或在任务管理器的服务中选中MySQL右键关闭。

切换到mysql的bin路径并跳过密码登录
d:
cd D:\mysql-8.0.23-winx64\mysql-8.0.23-winx64\bin
mysqld -console --skip-grant-tables --shared-memory

ps:mysql8中无法使用mysqld --skip-grant-tables
保持该命令行面板运行,如果输入mysqld -console --skip-grant-tables --shared-memory没有提示信息,再开一个管理员权限的命令行重复该步骤
重新用管理员权限打开命令行,切换到mysql的bin路径,免密登录
d:
cd D:\mysql-8.0.23-winx64\mysql-8.0.23-winx64\bin
mysql

然后输入以下sql语句
use mysql;// 切换至mysql数据库
update user set authentication_string='' where user='root'; // 清空密码
select user, authentication_string from mysql.user; // 查询mysql数据库的user表,不用在意内容,不为空即可
flush privileges; // 刷新保存操作

关闭之前打开的两个命令行界面(必须关闭输入了 mysqld -console --skip-grant-tables --shared-memory的命令行,否则之后仍然会免密登录),重新打开一个命令行开启mysql服务,切换到mysql的bin路径并登录修改密码
d:
cd D:\mysql-8.0.23-winx64\mysql-8.0.23-winx64\bin
net start mysql
mysql -u root -p
直接回车即可进入mysql

然后输入
use mysql;// 切换至mysql数据库
alter user 'root'@'localhost' identified by 'root'; // 重置密码
select user, authentication_string from mysql.user; // 查询mysql数据库的user表,不为空,和设置的密码
flush privileges; // 刷新保存操作

重新登录检验是否重置了密码。
试了几次,又试了几次,发现失败了

按照正常流程是能成功的,但是我试了很多次仍然失败。打开任务管理器发现有一个mysqlzt服务,应该是禅道自带的mysql和自己安装的mysql有冲突。关闭mysqlzt重复上述流程即可。

成功!
