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

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

但是它会返回一个错误:

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

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


当前回答

问题是您的密码不符合密码验证规则。您可以简单地按照以下步骤来解决您的问题。

您可以通过键入下面的代码简单地看到密码验证配置矩阵。

mysql-> SHOW VARIABLES LIKE 'validate_password%';

然后在你的矩阵中,你可以找到下面的变量与相应的值,在那里,你必须检查validate_password_length, validate_password_number_count和validate_password_policy。

检查这些变量的值。确保validate_password_length不大于6。您可以使用下面的代码将其设置为6。

SET GLOBAL validate_password_length = 6;

之后,您需要将validate_password_number_count设置为0。通过使用下面的代码来实现。

SET GLOBAL validate_password_number_count = 0;

最后,您必须将validate_password_policy设置为low。将其设置为中或高不会允许您使用不太安全的密码。通过下面的代码将其设置为低。

SET GLOBAL validate_password_policy=LOW;

其他回答

SHOW VARIABLES LIKE 'validate_password%';

mysql> SET GLOBAL validate_password.length = 6;
mysql> SET GLOBAL validate_password.number_count = 0;
mysql> SET GLOBAL validate_password.policy=LOW;
SHOW VARIABLES LIKE 'validate_password%';

MySQL 8*

SET GLOBAL validate_password.policy=LOW

参考链接解释政策-点击这里

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

mysql> SHOW VARIABLES LIKE 'validate_password%';

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

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

因为你的密码。你可以在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文档。

mysql> SET GLOBAL validate_password.policy = 0;