mysql8.0修改密码时:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

用临时密码进入mysql,修改密码时报错:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'aA123456';

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

原因是mysql8.0版安全做的很到位,我们看一下8.0版的设置密码策略:

mysql> SHOW VARIABLES LIKE 'validate_password%';                                                                              

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

对比mysql5.7版来看:mysql8.0必须先修改了符合要求的密码先,

才能SHOW VARIABLES LIKE 'validate_password%';


设置的密码必须符合以下条件:默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'aA@123456789';                                                     

Query OK, 0 rows affected (0.02 sec)


首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,                              这样可以使得设置密码只看密码长度是否符合定义的                                                                                              输入设值语句 “ set global validate_password.policy=LOW; ” 进行设值。

当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,                                                                                                    输入设值语句 “ set global validate_password.length=6; ” 进行设值。

 设置完成可以重新修改自己简单的密码了。



这里我说一下mysql5.7版和mysql8.0的区别:

mysql8.0版你需要修改一个符合中等密码策略的密码,才能查看环境变量,不然你不会发觉到参数的变化。     


所以有些小伙伴,直接借着mysql5.7的经验修改就会发生如下的错误:                                                          mysql> set global validate_password_policy=0;                                                                                            

ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'

你可能感兴趣的:(mysql8.0修改密码时:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements)