我的MySQL是80版本,57版本的步骤有些地方可能要修改
步骤 1:停止 MySQL 服务
最好以管理员身份打开 CMD,输入下面代码
net stop mysql80
步骤 2:创建初始化文件
在C盘新建一个名称为MySQL-reset的文件夹
进去MySQL-reset文件夹,新建一个文本文件(如 reset.txt),输入以下内容:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
保存后退出
步骤 3:以跳过权限表模式启动 MySQL
在 CMD 中输入以下命令(替换路径为你的 MySQL 安装目录):
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\mysql-reset\reset.txt" --console --skip-grant-tables --shared-memory
--defaults-file: my.ini配置文件路径(通常在 ProgramData 目录)。
--init-file: 刚才创建的reset.txt初始化文件路径。
--skip-grant-tables: 作用是跳过权限验证。
--shared-memory:作用是启用共享内存连接(用于下面步骤)
执行该命令后,最下面会有标点在闪烁,页面定住无法执行其他命令。没有该状况则说明失败,看最后的问题解决
出现上图说明成功
步骤 4:修改密码
保持上图的窗口运行,再开一个管理员 CMD。
登录 MySQL,此时无需密码即可登录进去
mysql -u root
在MySQL中执行下面代码,新密码注意与最开始reset.txt文本文件里一致,我这里设置的是123456
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
exit
步骤 5:重启 MySQL 服务
关闭之前运行的 MySQL 进程(按 Ctrl+C)。
重新启动 MySQL 服务
net start mysql80
再次登录MySQL,输入你重置后的密码
成功登录
步骤三如果没成功,则在cmd中执行下面的命令,清除并初始化data目录(有重要的可先备份data文件夹)
注意替换自己的data目录的路径
net stop mysql
rmdir /s /q "C:\Program Files\MySQL\MySQL Server 8.0\data"
mkdir "C:\Program Files\MySQL\MySQL Server 8.0\data
mysqld --initialize --user=mysql --console
net start mysql