MySQL5.7和之前的用户修改密码方式:
1 | mysql -uroot -e "Set password=password(‘123’);" |
以上三种方法在MySQL8.0以后版本中将不能使用,如果使用了将会导致在正确修改密码是报如下错误:
1 | mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123'; |
如遇上以上问题请使用update语句先清空authentication_string字段,然后再修改密码即可
1 | update user set authentication_string='' where user='root'; |
所以特别提醒童鞋们:
MySQL8.0后请使用alter修改用户密码,因为在MySQL8.0以后的加密方式为caching_sha2_password,如果使用update修改密码会给user表中root用户的authentication_string字段下设置newpassowrd值,当再使用alter user ‘root’@’localhost’ identified by ‘newpassword’修改密码时会一直报错,必须清空后再修改,因为authentication_string字段下只能是MySQL加密后的43位字符串密码,其他的会报格式错误,所以在MySQL8.0以后能修改密码的方法只能是:ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;