Mysql 您的密码不符合当前的策略要求
我想用以下语法在mysql中创建一个新用户:Mysql 您的密码不符合当前的策略要求,mysql,passwords,Mysql,Passwords,我想用以下语法在mysql中创建一个新用户: create user 'demo'@'localhost' identified by 'password'; 但它返回一个错误: 您的密码不符合当前的策略要求 我试过很多密码,但都不起作用。如何修复此问题?因为您的密码。您可以使用MySQL客户端中的以下查询查看密码验证配置指标: 显示变量,如“验证密码%”; 输出应该是这样的: +--------------------------------------+-------+ | Variab
create user 'demo'@'localhost' identified by 'password';
但它返回一个错误:
您的密码不符合当前的策略要求
我试过很多密码,但都不起作用。如何修复此问题?因为您的密码。您可以使用MySQL客户端中的以下查询查看密码验证配置指标:
显示变量,如“验证密码%”;
输出应该是这样的:
+--------------------------------------+-------+
| 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\u安全安装”并将密码安全级别修改为“中等”时,同样的问题也发生在我身上 我通过运行以下命令绕过了错误:
mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;
如有必要,请确保重新安装插件“验证密码”。在运行命令
sudo mysql\u secure\u installation
后
sudomysql
进入mysql提示符从mysql.user中选择用户、身份验证字符串、插件、主机
检查用户root是否具有插件身份验证套接字卸载插件验证密码代码>在运行前删除特权
这将用户“root”@“localhost”用“password”替换为mysql_native_密码代码>确保将密码更改为强密码
注意:查看此链接以获取更多帮助步骤1:检查默认身份验证插件
SHOW VARIABLES LIKE 'default_authentication_plugin';
步骤2:满足密码验证要求
SHOW VARIABLES LIKE 'validate_password%';
CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';
步骤3:使用正确的密码要求设置用户
SHOW VARIABLES LIKE 'validate_password%';
CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';
创建用户“”@'localhost',通过“密码”标识为“”;
如果您不关心密码策略是什么。您可以通过发出以下mysql命令将其设置为低:
mysql>设置全局验证密码策略=低 对于MySQL 8*
SET GLOBAL validate\u password.policy=LOW
解释策略的参考链接-此错误消息与表中存储的密码无关。如果键入(在SQL控制台上),也会发生此错误 “选择密码('123456789')” 或者如果 “选择密码('A123456789')” 或者如果 “选择密码('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时运行脚本吗
sudo mysql\u安全安装
您在某个地方选择了要选择的密码类型密码验证策略有三个级别: 低长度>=8 中等长度>=8,数字、混合大小写和特殊字符 强长度>=8,数字,大小写混合,特殊字符和字典文件 请输入0=低、1=中等和2=强: 您必须为同一策略提供密码 下面是一些密码示例:
对于类型0:
abcdabcd
对于类型1:
abcd1234
对于类型2:
ancd@1234
在我看来,将“验证密码”策略设置为“低”或卸载“验证密码插件”不是正确的做法。您决不能破坏数据库的安全性(除非您真的不在乎)。我想知道为什么人们甚至建议这些选项,而你只是可以选择一个好的密码
为了解决这个问题,我在mysql中执行了以下命令:显示@JNevill建议的变量,如“validate_password%”。我的“验证密码策略”与其他内容一起设置为“中”。以下是其执行的屏幕截图:
结果不言自明。对于有效密码(当密码策略设置为“中”时):
- 密码长度必须至少为8个字符
- 混合案例计数为1(至少1个小写字母和1个大写字母)
- 计数为1
- 最小特殊字符数为1
- 学生123@
- NINZAcoder 100美元
- demoPass#00
对于MySQL 8.0.x出现此问题的Laravel用户,请添加
'modes'=> [
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
请按如下所示将其添加到database.php文件:
// database.php
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env( 'DB_HOST', '127.0.0.1' ),
'port' => env( 'DB_PORT', '3306' ),
'database' => env( 'DB_DATABASE', 'forge' ),
'username' => env( 'DB_USERNAME', 'forge' ),
'password' => env( 'DB_PASSWORD', '' ),
'unix_socket' => env( 'DB_SOCKET', '' ),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
'modes' => [
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_ENGINE_SUBSTITUTION',
],
],
],
它为我解决了问题。问题是您的密码与密码验证规则不匹配。您可以简单地按照以下步骤解决问题 您只需键入以下代码即可查看密码验证配置矩阵
mysql-> SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
然后在您的矩阵中,您可以找到以下具有相应值的变量,您必须在其中检查验证密码长度
,验证密码数量
和验证密码策略
检查用于这些变量的值。确保您的validate\u password\u length
不应大于6。您可以使用下面的代码将其设置为6
mysql-> SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
在这之后,您需要将validate\u password\u number\u count
设置为0。使用下面的代码来完成
mysql-> SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
最后,您必须将validate\u password\u policy
设置为low
。哈
plugin-load-add=validate_password.so
validate_password_policy=LOW
validate_password_length=8
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0
SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;
mysql> SET GLOBAL validate_password.policy = 0;
UNINSTALL PLUGIN validate_password;
[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.
+--------------------------------------+-------+
| 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 |
+--------------------------------------+-------+