在MySQL 5.7版本中,用户密码策略分成低级LOW、中等MEDIUM和超强STRONG三种,推荐使用中等MEDIUM级别。
我们在安装MySQL的时候,会通过如下命令来设置用户密码策略:
1
|
shell> mysql_secure_installation |
使用如下命令查看现有的密码策略
1
|
mysql> SHOW VARIABLES LIKE 'validate_password%' ;
|
validate_password_number_count参数是密码中至少含有的数字个数,当密码策略是MEDIUM或以上时生效。
validate_password_special_char_count参数是密码中非英文数字等特殊字符的个数,当密码策略是MEDIUM或以上时生效。
validate_password_mixed_case_count参数是密码中英文字符大小写的个数,当密码策略是MEDIUM或以上时生效。
validate_password_length参数是密码的长度,这个参数由下面的公式生成
validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)
validate_password_dictionary_file参数是指定密码验证的字典文件路径。
validate_password_policy这个参数可以设为0、1、2,分别代表从低到高的密码强度,此参数的默认值为1,如果想将密码强度改弱,则更改此参数为0。
创建用户时报错:
1
|
mysql> CREATE USER 'test' @ 'localhost' IDENTIFIED BY 'test' ;
|
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
报错原因:
指定的密码没有符合现有的密码策略。
解决方法:
可以按照现有策略设置密码,也可以更改密码策略。
① 按照现有密码策略指定密码
1
|
mysql> CREATE USER 'test' @ 'localhost' IDENTIFIED BY 'System#2016' ;
|
Query OK, 0 rows affected (0.16 sec)
② 更改密码策略,降低密码的验证标准
--更改密码策略为LOW
1
|
mysql> set global validate_password_policy=0;
|
Query OK, 0 rows affected (0.00 sec)
--更改密码长度
1
|
mysql> set global validate_password_length=0;
|
Query OK, 0 rows affected (0.00 sec)
--密码最小长度为4
1
2
|
mysql> SHOW VARIABLES LIKE 'validate_password%' ;
mysql> drop user 'test' @localhost;
|
Query OK, 0 rows affected (0.07 sec)
--创建长度为3的密码报错
1
|
mysql> CREATE USER 'test' @ 'localhost' IDENTIFIED BY 'tes' ;
|
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
--创建长度为4的密码,4为现有密码策略的最小长度
1
|
mysql> CREATE USER 'test' @ 'localhost' IDENTIFIED BY 'test' ;
|
Query OK, 0 rows affected (0.01 sec)
MySQL 5.7修改密码
5.7版本的MYSQL的用户表的密码字段变了,不再是password字段,而是authentication_string字段。
然后改密码可以用:
1
|
update mysql. user set authentication_string= password ( '密码' ) where user = 'root' and Host = 'localhost' ;
|
或者
1
|
set password for 'root' @ 'localhost' = password ( '密码' );
|