mysql8的密码策略

mysql8的密码策略

mysql8和之前的mysql5.7在密码策略上小有不同

在mysql5.7我们可以执行命令

set global validate_password_policy=0;

但是报错:ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'

没有这个变量

我们设置了一个符合要求的密码,查看是否安装密码验证插件

修改密码

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

执行查看

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| 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.34 sec)

我们可以发现,在policy 和length前面是点而非下划线

因此我们将设置验证规则的sql语句稍微做一下修改

mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)

需要注意的是,此时修改的密码长度应该大于4,也就是说我们不能是只为root了

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

您可以将密码设置为root1



请看如下代码

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| 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)

上面的长度4,应该是最小长度了


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img