当前位置: 代码迷 >> 综合 >> Error1819(HY000):Your password does not satisfy the current policy requirements
  详细解决方案

Error1819(HY000):Your password does not satisfy the current policy requirements

热度:90   发布时间:2023-12-16 00:20:56.0

出现1819错误原因使因为,MySQL5.7为了加强安全性,为root用户随机生成了一个临时密码,解决方案如下

参考博客地址:https://www.cnblogs.com/ivictor/p/5142809.html

  1. 获得临时密码进入mysql

    # grep 'temporary password' /var/log/mysqld.log
    2019-08-18T00:27:59.187147Z 1 [Note] A temporary password is generated for root@localhost: la2<rej.j12Q
    
  2. 利用临时密码进入mysql

    # mysql -uroot -p'la2<rej.j12Q'
    
  3. 此时需要修改密码,不然会提示Error1820

  4. 为了方便,如果想直接使用一个简单密码,会报1819错误

    > set password = password('000000');
    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    

这个与validate_password_policy的值有关,validate_password_policy有以下取值:

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,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

为了改成简单密码,可以做如下操作:

  1. 修改validate_password_policy参数的值(使判断基于密码长度)

    > set global validate_password_policy=0;
    Query OK, 0 rows affected (0.00 sec)
    
  2. 修改validate_password_length,即密码最小的长度限制

    > set global validate_password_length=5;
    Query OK, 0 rows affected (0.00 sec)
    

    此处主要讲解决方法,不再叙述密码长度、特殊字符长度的相互影响,只需明确validate_password_length最小值为4即可,详情可看参考博客

  3. 修改密码

    > set password = password('000000');
    Query OK, 0 rows affected (0.00 sec)
    
  4. 此时修改成功,为了防止以后不小心改成简单密码,可以再把validate_password_policy改为默认的1或则2
    ps:当然,这只是个人想法,随意即可

    > set global validate_password_policy=2;
    Query OK, 0 rows affected (0.00 sec)
    
  5. 此时便可使用新密码重新进入mysql

    > exit;
    # mysql -uroot -p'000000';
    

ps:看到有些博客也有使用skip-grant-tables处理的,我没再尝试,大家感兴趣的可再试下这种方案

  相关解决方案