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位字符串密码,所以一定不能采用直接赋值的方法去修改用户密码,密码必须设置为空才行。