【Mac系统】之Mysql数据库遇到修改数字密码的问题(SQL语法错误:ERROR 1064 (42000),密码策略等问题:ERROR 1819 (HY000))
安装完Mysql也进行了第一次初始化密码以及修改密码规则(请参考文章),但是我想后续再改密码,出现了下面几个问题:
#SQL语句错误问题 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near '('12345678') WHERE user = 'root'' at line 1 #密码策略问题 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
一、SQL语句错误问题
在网上找了很多的设置密码的语句,发现都不适合,后来才发现,是我在设置密码规则时动了手脚,要按照密码规则设置的执行语句修改密码才可以(文章内容刚刚在上面文字发了链接,可以参考文章里的“修改密码规则”那块内容)
言归正传,下面为网上搜的一些更新密码的语句,由于不适合我的密码规则,所以用不了,但不一定其他人用不了,先在此记录下来:
UPDATE user SET Password = PASSWORD('12345678') WHERE user = 'root'; SET PASSWORD FOR 'root'@'localhost' = PASSWORD(123456);
下面是我的密码规则,更新密码语句,执行下面的语句就不报上面的语法错误了:
#下面两种都可以修改密码 ALTER user 'root'@'localhost' IDENTIFIED BY '12345678'; #或 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
二、密码策略问题
当我执行下面这两种语句时,报:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements密码策略问题
ALTER user 'root'@'localhost' IDENTIFIED BY '12345678'; #或 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
后经帮助查到一篇文章:《ERROR 1819 (HY000): Your password does not satisfy the current policy requirements》解决此问题。
解决办法:
先登录数据库,执行下面语句:
mysql -u root -p
password:xxx
1、查看 mysql 初始的密码策略,
输入下面语句,进行查看,如图
SHOW VARIABLES LIKE 'validate_password%';
这个就是密码策略!!!
关于 mysql 密码策略相关参数;
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;
2、设置密码的验证强度等级(就是因为这个问题)
只要修改密码强度等级就可以,就可以解决密码策略问题,原因是自己的密码“1234567”太简单了!!!所以改LOW点!!!
执行语句:
set global validate_password.policy=LOW; set global validate_password.policy=0;(我用的这条)
set global validate_password_policy=LOW; ==》文章里说用这个,但是我的密码策略那个字段名称是validate_password.policy,所以大家注意一下。
修改完强度等级之后,再执行:
#修改密码长度(可有可无,随意) set global validate_password.length = 6; #刷新 FLUSH PRIVILEGES; #更改密码成功!!! ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678'; #刷新 FLUSH PRIVILEGES; #退出 exit; #再重新用新密码登录 mysql -u root -p password:输入新密码
大功告成!!!
具体修改其他内容可以参考解决问题的文章!!!!
==============================================
扩展其他,更新查看user表信息:
update user set authentication_string='' where user='root';
select user,host,authentication_string from user;