MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。
使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
解决办法:
1.set global validate_password_policy=0;
/**密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。有以下取值:
Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。现在我们一个一个消灭*/
2. set global validate_password_mixed_case_count=0; //密码至少要包含的小写字母个数和大写字母个数清零
3. set global validate_password_number_count=3; //密码至少要包含的数字个数为3
4.set global validate_password_special_char_count=0; //密码至少要包含的特殊字符数为0
5.set global validate_password_length=3; //密码最小长度为3
6. SHOW VARIABLES LIKE 'validate_password%'; //查看密码策略
可以发现所有烦人的限制都没了,现在,设置一个超简单的密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
终极解决办法:
在/etc/my.cnf 中 的 [mysqld] 中增加如下的配置:
validate_password=OFF