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/天,具体规则查看活动详情