【问题标题】:How to create a six character password in MySQL 5.7如何在 MySQL 5.7 中创建六字符密码
【发布时间】:2016-04-27 01:54:24
【问题描述】:

我需要在我的 mac 上的新 MySQL 中创建一个具有六个字符密码的用户。我知道 5.7 中的最低设置只允许八个字符。有什么办法可以解决吗?

我输入CREATE USER 'newsier'@'localhost' IDENTIFIED BY 'special'

输出错误

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

【问题讨论】:

  • 这似乎是一个奇怪的问题。如果您不想运行密码验证,请不要加载插件
  • 我怎么不加载它。因为它在 5.7 中显示为默认值
  • 允许用户使用他们想要的passwords / phrasesDon't limit passwords
  • @RiggsFolly - 我们如何卸载插件?
  • SHOW PLUGINS; 将向您显示已安装的插件,如果您想卸载其中一个,命令为 UNINSTALL PLUGIN plugin_name

标签: mysql database mysql-5.7


【解决方案1】:

首先您使用mysql -u root -p 登录并通过以下方式检查当前的政策规则:

# SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 5      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

那么您可以随意更改上述任何变量:

# SET GLOBAL validate_password_length = 5;
# SET GLOBAL validate_password_number_count = 0;
# SET GLOBAL validate_password_mixed_case_count = 0;
# SET GLOBAL validate_password_special_char_count = 0;

最后,您可以创建一个数据库并使用更简单的密码访问它的用户:

# CREATE DATABASE test1;
# GRANT ALL PRIVILEGES ON test1.* TO user1@localhost IDENTIFIED BY "pass1";
# FLUSH PRIVILEGES;

之后您可以使用密码pass1mysql -u user1 -p test1 登录

【讨论】:

  • 这是正确的答案。错误“ERROR 1819 (HY000): Your password does not meet the current policy requirements”可能是因为mixed_cese_countspecial_char_count。无论我在哪里读到它说,改变传递长度,但它是关于混合大小写的。谢谢!
  • 对于 MySQL 版本 8.0.26-0,代码类似于 SET GLOBAL validate_password.number_count = 0;,而不是其中的下划线。
【解决方案2】:

您正在使用password validation plugin。默认情况下,它只允许 8 个字符和更长的密码。因为它无法检查哈希值,所以@RiggsFolly 认为对密码进行预哈希处理是正确的。

但是,如果您想change the options,则需要设置validate_password_length 系统变量的值。您可以在配置文件中执行此操作,或者:

SET GLOBAL validate_password_length=6;

【讨论】:

  • 这似乎不适用于通过 brew 安装的 mysql 5.7.11 for mac。即使更改选项后,我也会收到相同的错误。
【解决方案3】:

MySQL 5.7+ 默认有一个密码验证系统。如果您不想严格遵守该策略并需要分配自己的策略,则只需禁用密码验证并重新启动 mysqld 进程。

编辑 my.cnf 文件:

vi /etc/my.cnf

[mysqld]

validate-password=off

保存文件,然后重新启动进程

sudo service mysqld restart
or
systemctl restart mysqld

然后使用以下方法更改 Root 密码,并按照不会引发 Root 密码异常的步骤操作。

mysql_secure_installation
or
/usr/bin/mysql_secure_installation

如果您是第一次进行安装并想知道临时密码,请使用以下方法查找首次密码

 grep 'temporary password' /var/log/mysqld.log

在下面的评论框中让我知道你的 cmets。

【讨论】:

    【解决方案4】:

    可以通过运行以下命令完全禁用看似过于严格的密码“插件”: uninstall plugin validate_password

    如果您再次需要它,您可以通过以下方式重新打开它: INSTALL PLUGIN validate_password SONAME 'validate_password.so'

    您可以选择禁用它,设置密码并重新启用它:

    uninstall plugin validate_password;
    CREATE USER 'newsier'@'localhost' IDENTIFIED BY 'special';
    INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    

    进一步阅读:

    【讨论】:

      【解决方案5】:

      通过

      检查当前的密码策略规则
      SHOW VARIABLES LIKE 'validate_password%';
      

      现在设置这些变量的新值:

      SET GLOBAL validate_password_length = 6 ; // that you like
      SET GLOBAL validate_password_policy = LOW ;
      

      【讨论】:

        【解决方案6】:

        我相信您可以通过使用这样的预散列密码来解决它:-

        CREATE USER 'newsier'@'localhost' IDENTIFIED WITH mysql_native_password
               AS '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';
        

        但这确实意味着您需要正确地散列special,然后才能真正设置密码,然后您可以使用纯文本版本。

        【讨论】:

          【解决方案7】:

          这可能会有所帮助:

          GRANT ALL ON wordpress.* TO 'user'@'localhost' IDENTIFIED WITH mysql_native_password AS'yourpassword';

          【讨论】:

            猜你喜欢
            • 2015-11-19
            • 2010-10-01
            • 2011-11-23
            • 2011-10-10
            • 1970-01-01
            • 1970-01-01
            • 2020-04-15
            • 2018-11-27
            • 2011-12-04
            相关资源
            最近更新 更多