Linux服务器安装MySQL,初始化密码登录后报错:
1、
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
2、
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
一、
安装MySQL第一次登录之后,输入语句报错
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statemen
t.
这是因为第一次登录到服务端后,必须马上修改密码,不然会报如上错误:
修改密码,命令如下:
ALTER USER USER() IDENTIFIED BY '123456';
二、
如果只是修改为一个简单的密码,就像上面那样,会报以下错误:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
报错是因为触发mysql的安全校验问题了,与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 |
如上所示,默认是1,即MEDIUM
,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
但是,有时候只是为了自己测试,不想密码设置得那么复杂,只想设置root的密码为123456怎么办呢。
1、修改两个全局参数:
首先,修改validate_password_policy
参数的值
命令如下:
set global validate_password_policy=0;
这样,判断密码的标准就基于密码的长度了。这个由validate_password_length
参数来决定。
这个时候我们再看下变化
命令如下:
select @@validate_password_length;
2、其次、可以看到,validate_password_length参数默认为8,它有最小值的限制,最小值为:
validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)
其中,validate_password_number_count
指定了密码中数据的长度,validate_password_special_char_count
指定了密码中特殊字符的长度,validate_password_mixed_case_count
指定了密码中大小字母的长度。
这些参数,默认值均为1,所以validate_password_length
最小值为4,如果你显性指定validate_password_length
的值小于4,尽管不会报错,但validate_password_length
的值将设为4。如下所示:
set global validate_password_length=1;
这个时候MySQL的密码就可以设置成简单密码也不会报错了
3、MySQL5.7是默认安装validate_password插件的
通过如下命令验证validate_password插件是否安装
SHOW VARIABLES LIKE 'validate_password%';