1、程序报错
Your password does not satisfy the current policy requirements
译:您的密码不符合当前策略要求
You must reset your password using ALTER USER statement before executing this statement.
译:在执行此语句之前,必须使用ALTER USER语句重置密码。
2、项目背景
在LINUX系统中安装了MySQL8.0之后,使用 cat /var/log/mysqld.log 命令查看mysql的输出日志,在其中可以看到安装MySQL8.0之后,我这里的默认初始密码为k5yV0NyClY,J
对于我们平时学习来说,这密码太难记,所以我们就需要修改一个我们记得住的简单密码。
3、错误分析
查阅了许多资料与教程,MySQL5.0版本改密码的步骤为(分号不可少!!!)
set global validate_password_policy=LOW; 设置密码等级变低,方便我们设置简单密码
set global validate_password_length=6(可变); 设置密码最小长度set password=password('*********'); 设置密码
先设置密码,再设置密码等级和长度。这里一定要注意MySQL8.0版本修改密码等级和最小长度的语句 set global validate_password 后面由之前的 ‘_’ 改为了‘ . ’。
alter user 'root'@'localhost' identified with mysql_native_password by '****'; 修改密码
set global validate_password.policy=0; 设置密码等级变低,方便我们设置简单密码
set global validate_password.length=6(可变); 设置密码最小长度
如果和MySQL5.0版本一样先设置了密码等级和长度,就会报错 You must reset your password using ALTER USER statement before executing this statement. 提示我们必须要先使用ALTER USER语句重置密码。但是如果我们现在直接按照他的提示设置密码的话,又会报错Your password does not satisfy the current policy requirements 提示我们密码不符合当前策略要求,也就是密码太简单
4、错误解决(亲测有效)
既然它提示我们密码不符合当前策略要求,那我们就先按照他的策略修改密码,这里我是先把密码修改为他给我的默认密码修改一位,也就是我上面说到的默认初始密码为k5yV0NyClY,J,我把最后一位‘J’改为了‘G’。这里显示修改成功。
然后再设置密码的等级和最小长度。
代码:
(1)按照策略修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'k5yV0NyClY,G';
(2)修改密码等级
set global validate_password.policy=0;
(3)修改密码最小长度
set global validate_password.length=6;
(4)修改自己想要的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '****';
最后成功解决!!!