这是 mysql 初始化时,使用临时密码,修改自定义密码时,由于自定义密码比较简单,就出现了不符合密码策略的问题。
mysql> update user set authentication_string=password('root') where user='root' -> ; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决办法:
1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE ‘validate_password%’; ” 进行查看,
如下:
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.13 sec)
2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,如下:
mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.03 sec)
3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 4位的密码,设置 validate_password_length 的全局参数为 4即可,
输入设值语句 “ set global validate_password_length=4; ” 进行设值,
mysql> set global validate_password_length=4; Query OK, 0 rows affected (0.03 sec)
4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ update user set authentication_string=password(‘root’) where user=‘root’; ” 可以看到修改成功,表示密码策略修改成功了!!!
mysql> update user set authentication_string=password('root') where user='root'; Query OK, 1 row affected, 1 warning (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 1