【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;

原文地址:https://www.cnblogs.com/Owen-ET/p/9644727.html