解决MySQL8.0以上版本忘记密码或者出现ERROR1045(28000)错误的问题,以及skip-grant-tables 不起作用的问题

众所周知,在MySql8.0一下版本中,忘记密码只需要关闭mysql服务之后在my.ini文件末尾加入skip-grant-tables 语句,之后重新启动mysql服务,进入Mysql重置密码就可以解决了;

但是最近我也遇到了这个问题,发现MySQL8.0以上版本对于skip-grant-tables和mysqld –skip-grant-tables命令已经不支持了,经过测试,我发现了如下解决方案;

  1. 首先停止MySQL服务,可以从服务中停止Mysql这个服务(有的系统是MySQL80或者MySQL57),也可以使用命令行输入“net stop mysql”结束该服务;
  2. 打开命令行,输入“mysqld --console --skip-grant-tables --shared-memory”语句,执行,这时命令行会卡住,不要着急,打开一个新的命令行,输入“mysql -u root”便可以无密码直接进入MySQL了;
  3. 到这里我们也成功跳过权限进入了MySQL服务器;这时,我们只要执行语句:“ALTER USER “root”@“localhost” IDENTIFIED BY “88886666”;”便可以成功修改密码了;
  4. 注意,如果在第三步中遇到“ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement”问题,只需要执行以下语句“flush privileges”之后再执行修改密码语句便可以成功修改密码了!

修改密码完成后,关闭所有命令行窗口,在服务面板重新启动MySQL服务或者使用语句“net start mysql”,便可以关闭跳过权限的命令,正常使用MySQL服务!

你可能感兴趣的:(问题集锦)