错误信息
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
错误复现
mysql> SET password=password("1qazxsw2");
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
解决方法
- 面对:设置更为复杂的密码(略)
- 回避:修改密码策略
# MySQL 5.7
#修改密码策略(以下两个策略需要一起调整)
# 密码策略调整为:LOW级别,
set global validate_password_policy=0;
# 密码长度必须至少为1个字符
set global validate_password_length=1;
相关知识
关于MySQL密码策略
密码相关的参数: validate_password
validate_password 是一个插件,可以通过show plugins 命令查到
mysql> show plugins;
+----------------------------+----------+--------------------+----------------------+---------+
| Name | Status | Type | Library | License |
+----------------------------+----------+--------------------+----------------------+---------+
| validate_password | ACTIVE | VALIDATE PASSWORD | validate_password.so | GPL |
+----------------------------+----------+--------------------+----------------------+---------+
与 validate_password 有关的参数
SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
参数说明
validate_password_check_user_name :用户名检测,默认关闭
validate_password_dictionary_file :字典文件,就是要在字典规则里才能满足密码的条件。
validate_password_length :密码的长度至少为8位
validate_password_mixed_case_count :密码中至少有一个大写小字母
validate_password_number_count :密码中至少一个数字
validate_password_special_char_count :密码中至少一个特殊字符
validate_password_policy :密码的安全策略
validate_password_policy 参数可选值:LOW或者0 、MEDIUM或者1、STRONG或者2
LOW :策略仅测试密码长度。密码长度必须至少为8个字符。
MEDIUM :策略添加了密码必须至少包含1个数字字符,1个小写字符,1个大写字符和1个特殊(非字母数字)字符的条件。
STRONG :策略添加了长度为4或更长的密码子字符串不能匹配字典文件中的字词(如果已经指定)的条件。
所以最终的密码设置策略就是:不得低于8位,而且必须至少有一个大写和一个小写字母、至少一个数字和至少的一个特殊字符组成;
最基本的规则:大写+小写+特殊字符+数字组成的8位以上密码
可以通过以下方法评估密码的复杂度,系统来对密码进行打分
mysql> SELECT VALIDATE_PASSWORD_STRENGTH('Q~123456');
+----------------------------------------+
| VALIDATE_PASSWORD_STRENGTH('Q~123456') |
+----------------------------------------+
| 50 |
+----------------------------------------+
1 row in set (0.00 sec)