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

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

但是它会返回一个错误:

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

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


当前回答

注意:这可能不是一个安全的解决方案。但是如果您正在测试环境中工作,只需要快速修复,甚至不关心安全设置。这是一个快速的解决方案。

当我运行“mysql_secure_installation”并将密码安全级别修改为“中等”时,同样的问题发生在我身上。

我通过运行以下程序绕过了这个错误:

mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;

如果需要,请确保重新安装插件“validate_password”。

其他回答

如果你想设置一个空白密码。然后在MySQL客户端运行以下查询:

SET GLOBAL validate_password.check_user_name = No;
SET GLOBAL validate_password.dictionary_file = '';
SET GLOBAL validate_password.length = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.special_char_count = 0;

输出应该是这样的:

    SHOW VARIABLES LIKE 'validate_password%';

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 0     |
| validate_password.mixed_case_count   | 0     |
| validate_password.number_count       | 0     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 0     |
+--------------------------------------+-------+

然后,您可以使用以下查询更新您的空白密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

请设置满足7条MySql验证规则的密码

例如:- d_VX>N(“xn_BrD2y

让验证标准更简单一点可以解决这个问题

SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;

但建议使用强密码是正确的解决方案

对于MySQL 8,你可以使用下面的脚本:

SET GLOBAL validate_password.LENGTH = 4;
SET GLOBAL validate_password.policy = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.special_char_count = 0;
SET GLOBAL validate_password.check_user_name = 0;
ALTER USER 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

因为你的密码。你可以在MySQL客户端中使用以下查询查看密码验证配置指标:

SHOW VARIABLES LIKE 'validate_password%';

输出应该是这样的:

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 6     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+

然后可以将密码策略级别设置低一些,例如:

SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.number_count = 0;

查看MySQL文档。

有些时候,找到一个快速的解决方案是很棒的。但如果你能避免降低密码限制,它可以让你在未来的大头疼。

下一个链接来自官方文档https://dev.mysql.com/doc/refman/5.6/en/validate-password.html,在那里他们提供了一个与您的示例完全相同的示例,并解决了它。

唯一的问题是您的密码不够强,无法满足实际的最小策略(不建议删除)。所以你可以尝试不同的密码,就像你在例子中看到的那样。