MySQL 8 忘记密码的解决办法

mysql 以前版本重置密码的方式已经不适合于mysql 8,正确的步骤如下:

1. 在my.cnf添加skip-grant-tables

2. 重启mysql,直接敲mysql进入

3. 清空root密码

# update user set authentication_string='' where user='root';

4. my.cnf注释掉skip-grant-tables

5. 重启mysql

6. 敲mysql进入设置密码

# ALTER user 'root'@'localhost' IDENTIFIED BY 'passwd'

7. 重置密码完成

注意:在第三步中,重新设置authentication_string字段的时候,如果不设置空,而设置某个值,比如:

mysql> update user set authentication_string='123456' where user='root';

这时重新登陆mysql时会因为密码不正确被拒绝登陆,因为密码不正确。原因是:authentication_string字段下只能是mysql加密后的41位字符串密码,所以一定不能采用直接赋值的方法去修改用户密码,密码必须设置为空才行。