用临时密码进入mysql,修改密码时报错:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'aA123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因是mysql8.0版安全做的很到位,我们看一下8.0版的设置密码策略:
mysql> SHOW VARIABLES LIKE 'validate_password%';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
对比mysql5.7版来看:mysql8.0必须先修改了符合要求的密码先,
才能SHOW VARIABLES LIKE 'validate_password%';
设置的密码必须符合以下条件:默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'aA@123456789';
Query OK, 0 rows affected (0.02 sec)
首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可, 这样可以使得设置密码只看密码长度是否符合定义的 输入设值语句 “ set global validate_password.policy=LOW; ” 进行设值。
当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可, 输入设值语句 “ set global validate_password.length=6; ” 进行设值。
设置完成可以重新修改自己简单的密码了。
这里我说一下mysql5.7版和mysql8.0的区别:
mysql8.0版你需要修改一个符合中等密码策略的密码,才能查看环境变量,不然你不会发觉到参数的变化。
所以有些小伙伴,直接借着mysql5.7的经验修改就会发生如下的错误: mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
网友评论