我想在MySQL中创建一个新用户,语法如下:
create user 'demo'@'localhost' identified by 'password';
但是它会返回一个错误:
您的密码不符合当前策略要求。
我试过很多密码,但都没用。我该如何解决这个问题?
我想在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应用这些变化后,洪阮回答 Sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 加上最后一行:
[mysqld]
#
# * Basic Settings
#
..
..
..
validate_password.policy = LOW # <== this line
..
..
# IMPORTANT notes:
# - you can add more policy commands each by your needs.
# - notice the "." before "policy" , in some mysql versions is "_" , so be aware of that.
保存文件并重新启动mysql server: sudo service mysql restart 连接并检查配置的持久性: Sudo mysql -u your_username -p 显示像"validate_pass%"这样的变量; 结果应该是这样的:
+--------------------------------------+-------+
| 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 | 0 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
我希望这能帮助到人们。
编辑:感谢@ahmednawazbutt:不要忘记FLUSH特权;
注意:这可能不是一个安全的解决方案。但是如果您正在测试环境中工作,只需要快速修复,甚至不关心安全设置。这是一个快速的解决方案。
当我运行“mysql_secure_installation”并将密码安全级别修改为“中等”时,同样的问题发生在我身上。
我通过运行以下程序绕过了这个错误:
mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;
如果需要,请确保重新安装插件“validate_password”。
此错误消息与表中存储的密码无关。如果键入(在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
有些时候,找到一个快速的解决方案是很棒的。但如果你能避免降低密码限制,它可以让你在未来的大头疼。
下一个链接来自官方文档https://dev.mysql.com/doc/refman/5.6/en/validate-password.html,在那里他们提供了一个与您的示例完全相同的示例,并解决了它。
唯一的问题是您的密码不够强,无法满足实际的最小策略(不建议删除)。所以你可以尝试不同的密码,就像你在例子中看到的那样。
问题是您的密码不符合密码验证规则。您可以简单地按照以下步骤来解决您的问题。
您可以通过键入下面的代码简单地看到密码验证配置矩阵。
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;