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

时间:2017-03-29 13:19:45

标签: mysql passwords

我想用mysql在mysql中创建一个新用户:

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

但它返回错误:

  

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

我尝试了很多密码,但他们不能工作。我该如何解决这个问题?

20 个答案:

答案 0 :(得分:88)

因为你的密码。您可以使用SHOW VARIABLES LIKE 'validate_password%';中的mysql查看密码验证配置指标,也可以将密码策略级别设置为较低,例如:

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

您可以观看此视频:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements - Mysql (Youtube)

答案 1 :(得分:42)

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

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

我通过运行以下内容来绕过错误:

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

请确保在必要时重新安装插件“validate_password”。

答案 2 :(得分:24)

如果您不在乎密码策略是什么。您可以通过发出以下mysql命令将其设置为LOW:

mysql> SET GLOBAL validate_password_policy=LOW;

答案 3 :(得分:11)

运行命令sudo mysql_secure_installation之后。

  1. 运行sudo mysql进入mysql提示符。
  2. 运行此SELECT user,authentication_string,plugin,host FROM mysql.user;,以检查用户 root 是否具有插件 auth_socket
  3. 然后在运行之前运行uninstall plugin validate_password;来删除特权 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';务必将 密码 更改为安全密码。

注意:请查看此链接https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04以获取更多帮助

答案 4 :(得分:11)

对于MySQL 8 *

SET GLOBAL validate_password.policy=LOW

有关政策说明的参考链接-Click Here

答案 5 :(得分:7)

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

以root用户登录

mysql -u root -p

更改政策

SET GLOBAL validate_password_policy=LOW;

SET GLOBAL validate_password_policy=0;

退出

exit

重新启动MySQL服务

sudo service mysqld 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;

答案 6 :(得分:4)

对于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;

答案 7 :(得分:2)

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

只需在下面的代码中键入即可简单地查看密码验证配置矩阵。

mysql-> SHOW VARIABLES LIKE 'validate_password%';

然后,您可以在矩阵中找到以下具有相应值的变量,您必须在其中检查validate_password_lengthvalidate_password_number_countvalidate_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。将其设置为MediumHigh不会允许您使用不太安全的密码。通过以下代码将其设置为low

SET GLOBAL validate_password_policy=LOW;

答案 8 :(得分:2)

第1步:检查您的默认身份验证插件

SHOW VARIABLES LIKE 'default_authentication_plugin';

第2步:满足您的密码验证要求

SHOW VARIABLES LIKE 'validate_password%';

第3步:使用正确的密码要求设置用户

CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';

答案 9 :(得分:1)

我认为将“ validate_password_policy” 设置为“低” 或卸载“验证密码插件”不是正确的选择。您绝不能损害数据库的安全性(除非您不在乎)。我想知道为什么当您只需选择一个好的密码时,人们甚至会建议这些选项。

为解决此问题,我在mysql中执行以下命令: SHOW VARIABLES LIKE'validate_password%',如@JNevill所建议。我的“ validate_password_policy”连同其他设置都设置为“中”。以下是其执行过程的屏幕截图:Validate Password Policy

结果不言自明。对于有效的密码(当“密码策略”设置为“中”时):

  • 密码长度至少为8个字符
  • 混合病例数为1(至少1个小写字母和1个大写字母)
  • 数字为1
  • 最小特殊字符数为1

因此,必须遵守有效的密码政策。上述规则的有效密码示例如下:

  • Student123 @
  • NINZAcoder $ 100
  • demoPass#00

您可以选择符合政策的任何组合。

对于其他“ validate_password_policy” ,您可以简单地查看不同选项的值并相应地选择密码(我没有尝试过“ HIGH” )。

答案 10 :(得分:1)

我遇到了同样的问题,答案就在您的面前,还记得当您在安装mysql之类的

时运行脚本

sudo mysql_secure_installation

您在某处选择了想要选择

的密码类型

密码验证策略分为三个级别:

低长度> = 8 MEDIUM长度> = 8,数字,大小写混合和特殊字符 长度> = 8,数字,大小写混合,特殊字符和字典文件

请输入0 = LOW,1 = MEDIUM和2 = STRONG:

您必须输入相同策略的密码

以下是您的密码示例示例:
对于类型0:abcdabcd
对于类型1:abcd1234
对于类型2:ancd@1234

答案 11 :(得分:1)

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

例如:-d_VX>N("xn_BrD2y

使验证标准更简单将解决问题

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

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

答案 12 :(得分:1)

类似于“ validate_password%”的显示变量;

enter image description here

mysql> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = LOW;

类似于“ validate_password%”的显示变量;

enter image description here

答案 13 :(得分:0)

对于Laravel用户在MySQL 8.0.x中遇到此问题,请添加

'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',
            ],
        ],
    ],

它为我修复了。

答案 14 :(得分:0)

此错误消息与表中存储的密码无关。如果您键入(在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

答案 15 :(得分:0)

无法在ubuntu全新安装的mysqld上为我工作,必须将此添加到/etc/mysql/mysql.conf.d/mysqld.cnf或服务器无法启动(猜测插件未启动)当我只是在没有plugin-load-add指令的情况下将其添加到正确的时间加载

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

答案 16 :(得分:0)

mysql> SET GLOBAL validate_password.policy = 0;

答案 17 :(得分:0)

在某些时候,找到快速解决方案非常重要。但是,如果您可以避免降低密码限制,则可以避免将来头疼。

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

您仅有的一个问题是您的密码不够强,无法满足实际的最低要求(不建议删除)。因此,您可以尝试使用示例中所示的其他密码。

答案 18 :(得分:0)

如果mysql托管在aws上,则只需卸载插件即可。来自下面的root用户射击

UNINSTALL PLUGIN validate_password;

答案 19 :(得分:0)


此信息对以上所有答案都很重要:当您重新启动 mysql 服务器时,所有策略配置都将重置并丢失,因此 要使您的策略配置持久化,您应该遵循以下说明:(在 ubuntu 服务器版本 20.10 上测试)
  1. 使用 mysql Hung Nguyen answer 应用这些更改后
  2. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  3. 添加最后一行:
[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.
  1. 保存文件并重启mysql服务器:sudo service mysql restart

  2. 连接并检查配置的持久性:
    sudo mysql -u your_username -p
    show variables like "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     |
+--------------------------------------+-------+

我希望这可以帮助人们。