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

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

但是它会返回一个错误:

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

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


当前回答

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

mysql> SHOW VARIABLES LIKE 'validate_password%';

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

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

其他回答

MySQL 8*

SET GLOBAL validate_password.policy=LOW

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

如果你不关心密码策略。你可以通过下面的mysql命令将其设置为LOW:

mysql> SET GLOBAL validate_password.length = 4;
mysql> SET GLOBAL validate_password.policy=LOW;

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

它帮我解决了问题。

我有同样的问题,答案就在你面前,记得当你在安装mysql的时候运行脚本

sudo mysql_secure_installation

您可以在某个地方选择想要的密码类型

密码验证策略有三种级别:

LOW长度>= 8 中等长度>= 8,数字,混合大小写,特殊字符 STRONG长度>= 8,数字,混合大小写,特殊字符和字典文件

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

你必须给相同的策略设置密码

下面是一些密码示例: 对于类型0:abcdabcd 类型1:abcd1234 类型2:ancd@1234

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

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

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