我想在MySQL中创建一个新用户,语法如下:

create user 'demo'@'localhost' identified by 'password';

但是它会返回一个错误:

您的密码不符合当前策略要求。

我试过很多密码,但都没用。我该如何解决这个问题?


当前回答

您必须将MySQL密码策略更改为LOW。

以root用户登录

mysql -u root -p

改变政策

SET GLOBAL validate_password_policy=LOW;

or

SET GLOBAL validate_password_policy=0;

exit

exit

重启MySQL服务

sudo service mysql restart

请将MySQL密码策略修改为Low = 0 / Medium = 1 / High = 2。

SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_policy=1;    
SET GLOBAL validate_password_policy=2;

其他回答

此错误消息与表中存储的密码无关。如果键入(在SQL控制台上),也会出现这种情况

“选择密码(“123456789”)”

或者,如果

“select密码(’A123456789’)”

或者,如果

“select a ! 123456789’密码()”

如果你输入

“选择密码(A a123456789 !)”

那么它就会起作用。只需使用大+小字母,特殊字符和数字创建您的密码。

您可以在my.cnf中禁用这些检查,但这样您就会有安全风险!

在[mysqld]中添加:

validate_password_policy=LOW
validate_password_special_char_count=0
validate_password_length=0
validate_password_mixed_case_count=0
validate_password_number_count=0

最好的选择是通过你的密码策略,并设置相应的密码。您可以通过运行以下命令检查现有的密码验证插件系统变量的值

mysql> SHOW VARIABLES LIKE 'validate_password%';

通过操作系统变量来减少安全策略从来都不是一个好做法。

您可以从官方文档中阅读关于每个变量及其用例的详细信息,参考链接MySQL 5.6 MySQL 5.7 MySQL 8.0

在我的例子中,当有一个错误的引用时,错误就出现了:

GRANT所有database_name。* ' user1 ' @'8.10.12.2';(用户名周围的单引号错误)

vs

GRANT所有database_name。* 'user1'@'8.10.12.2';(正确)

这是phpmyadmin中的一个错误。启动mysql

sudo mysql -p

然后执行如下命令:

SET GLOBAL validate_password.policy = 0;

现在您可以更改密码了。如果你喜欢,你可以在它之后重置它:

SET GLOBAL validate_password.policy = MEDIUM;

(您可以使用低,中或高)

然后执行exit关闭mysql。

这里找到了解决方案。

mysql> SET GLOBAL validate_password.policy = 0;