博主自己多次忘记自己本地MySQL的密码,多次《删库跑路》,现写下这篇技术贴,一来是为后续网友们遇到相同问题可以少走弯路,二来是给自己做一个备忘录。
之前查阅了很多关于更改MySQL密码的方式是在my.ini中注释掉skip-grant-tables,亲测无效,原因是这个功能在mysql8.0版本之后不再有效,算是一个bug被修复了。
这个旧的重置密码的操作,已失效!
正确方式如下:
1.首先进入到MySQL所在路径的bin文件夹,我这里是在F盘下:
要在管理员模式下进入CMD或者power shell,我这里以powershell为例。
1.进入MySQL的可执行文件(exe)所在目录:
cd F:\mysql-8.0.30-winx64\bin
2.停止当前MySQL的服务
net stop mysql
3.进入MySQL安全模式
.\mysqld --console --skip-grant-tables --shared-memory
若为下图界面,则说明你还未暂停当前MySQL服务,需要执行步骤2:
若为下图界面,则说明成功进入安全模式:
此时,切勿关闭当前页面。重新开启一个管理员模式下的CMD或者powershell,然后再次执行该语句以进入MySQL可执行文件所在目录:
cd F:\mysql-8.0.30-winx64\bin
此时,输入
.\mysql
看到下图界面,即说明已经绕过登陆密码成功进入MySQL:
此时,输入下面的语句,用以切换数据库
USE mysql;
--切换数据库到MySQL用户鉴权信息所在base
此为,当前数据库中映射的登录用户信息
根据网友经验需要先将密码置空,然后刷新权限,最后再设置密码。
方法为依次属于下列语句:
update user set authentication_string='' where user='root';
--此句作用是root用户的密码设置为空
flush privileges;
--此句作用是刷新权限,必须执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
--此句作用是将root用户的密码修改为123456
若出现以下界面,则说明操作成功:
最后,关闭另一个管理员模式下的CMD或powershell(此前维持MySQL安全模式的),在本窗口继续输入quit即可退出MySQL:
执行下列语句,重启MySQL服务:
net start mysql
输入下列语句,输入之前重置的密码(本例中为123456)后即可进入MySQL:
.\mysql -uroot -p
成功效果如下: