【问题标题】:How do I turn off the mysql password validation?如何关闭mysql密码验证?
【发布时间】:2016-07-18 00:00:18
【问题描述】:

看来我可能无意中在 MySQL 5.7 中加载了密码验证插件。这个插件似乎强制所有密码遵守某些规则。

我想关闭它。

我尝试按照here 的建议更改 validate_password_length 变量,但无济于事。

mysql> SET GLOBAL validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'app' = PASSWORD('abcd');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

我想卸载插件或以某种方式中性它。

【问题讨论】:

  • 您是否尝试过更改策略设置? SET GLOBAL validate_password_policy=LOW;
  • SET GLOBAL validate_password.policy=LOW;

标签: mysql validation global-variables mysql-5.7 change-password


【解决方案1】:

这是我删除验证密码插件的方法:

  1. 以root身份登录mysql服务器mysql -h localhost -u root -p
  2. 运行以下sql命令:uninstall plugin validate_password;
  3. 如果最后一行不起作用(新的mysql版本),你应该执行UNINSTALL COMPONENT 'file://component_validate_password';

我不建议将此解决方案用于生产系统。我用了 此解决方案在本地 mysql 实例上仅用于开发目的。

【讨论】:

  • 要重新启用它,使用以下命令:INSTALL PLUGIN validate_password SONAME 'validate_password.so';
  • 要删除插件,您需要通过grep 'password' /var/log/mysqld.log | tail -1 和/usr/bin/mysql_secure_installation 至少设置一次安全密码。这样做之后,您可以从上面的 srayhunter 运行命令,然后运行 ​​mysqladmin -u root -p'oldpassword' password newpass 以使用您想要的任何密码。
  • 该插件在当前 MariaDB 中名为cracklib_password_check。
  • 注意:在 MySQL 8.0.4 中,validate_password 插件被重新实现为 validate_password 组件。代替上面的 #2 查询,运行:UNINSTALL COMPONENT 'file://component_validate_password';
  • mysql> SET GLOBAL validate_password_policy = 0;
【解决方案2】:

对于 mysql 8.0,disable 密码验证组件的命令是:

UNINSTALL COMPONENT 'file://component_validate_password';

要重新安装它,命令是:

INSTALL COMPONENT 'file://component_validate_password';

如果你只想change密码验证插件的策略:

SET GLOBAL validate_password.policy = 0;   // For LOW
SET GLOBAL validate_password.policy = 1;   // For MEDIUM
SET GLOBAL validate_password.policy = 2;   // For HIGH

【讨论】:

    【解决方案3】:

    根据 Sharfi 的回答,编辑 /etc/my.cnf 文件并仅添加这一行:

    validate_password_policy=LOW
    

    这应该足以消除 OP 要求的验证。在此更改之后,您可能需要重新启动 mysqld。根据您的操作系统,它看起来像:

    sudo service mysqld restart
    

    validate_password_policy 取值 0、1 或 2 或对应于这些数字的单词 LOW、MEDIUM 和 STRONG。默认为 MEDIUM (1),要求密码至少包含 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符,并且总密码长度至少为 8 个字符。按照我在此处的建议更改为 LOW 然后只会检查长度,如果没有通过其他参数更改它将检查长度为 8。如果您也想缩短该长度限制,您还可以将 validate_password_length 添加到my.cnf 文件。

    有关级别和详细信息的更多信息,请参阅the mysql doc。


    对于 MySQL 8,该属性已从“validate_password_policy”更改为“validate_password.policy”。有关最新信息,请参阅更新的 mysql doc。

    【讨论】:

    • 如果您只需要临时更改,允许设置单个密码,您可以使用SET GLOBAL validate_password_policy=LOW;
    • 这比移除模块本身更好。
    • mysql: 未知变量 'validate_password_policy=LOW'
    • 看起来变量名在最新的 MySQL 中发生了变化。 @Amalgovinus,尝试使用变量名“validate_password.policy”,看看它是否适合你。如果是这样,我会更新我的答案。
    【解决方案4】:

    要在 mariadb-10.1.24 (Fedora 24) 中禁用密码检查,我必须在 /etc/my.cnf.d/cracklib_password_check.cnf 文件中注释掉一行:

    ;plugin-load-add=cracklib_password_check.so
    

    然后重启mariadb服务:

    systemctl restart mariadb.service
    

    【讨论】:

      【解决方案5】:

      你可以在mysql配置文件中配置这个 打开/etc/my.cnf 文件 在这个文件中,所有配置密码策略的行都被注释为类似

      #validate-password=FORCE_PLUS_PERMANENT
      #validate_password_length=10
      #validate_password_mixed_case_count=1
      #validate_password_number_count=1
      #validate_password_policy=MEDIUM
      

      取消注释并更改要更改的属性的值。

      【讨论】:

        【解决方案6】:

        如果您想例外,您可以应用以下“hack”。它需要具有DELETE 和INSERT 权限的用户才能访问mysql.plugin 系统表。

        uninstall plugin validate_password;
        SET PASSWORD FOR 'app' = PASSWORD('abcd');
        INSTALL PLUGIN validate_password SONAME 'validate_password.so';
        

        平淡无奇的安全免责声明:考虑一下为什么要让密码更短或更简单,也许考虑用更复杂的密码替换它。但是,我理解“现在是凌晨 3 点,只需要工作”的时刻,只要确保你没有建立一个黑客系统,以免你自己被黑客入侵

        【讨论】:

          【解决方案7】:

          回答您的问题:如何关闭 mysql密码验证?

          简短回答:您可以降低复杂性。

          以 root 身份登录 Mysql 客户端。

          set global validate_password.policy = LOW;
          set global validate_password.length = 2;
          set global validate_password.mixed_case_count = 0;
          set global validate_password.number_count = 0;
          set global validate_password.special_char_count = 0;
          

          继续create user ...

          【讨论】:

          • 感谢这对我在本地机器上设置简单密码有很大帮助。谢谢:)
          【解决方案8】:

          进一步了解ktbos的答案:

          我修改了mysqld.cnf文件,mysql启动失败。 原来是我修改了错误的文件!

          因此请确保您修改的文件包含 [mysqld_safe] 和 [mysqld] 等段标记。在后者下,我按照建议做了并添加了以下行:

          validate_password_policy=LOW
          

          这完美地解决了我在密码中不需要特殊字符的问题。

          【讨论】:

            【解决方案9】:

            卸载:

            mysql> uninstall plugin validate_password;
            

            show plugins;不显示卸载的插件

            安装:

            mysql> install plugin validate_password SONAME 'validate_password.so';
            

            被配置禁用:

            [mysqld]
            validate_password = OFF
            

            只有在安装后才能通过配置禁用插件。

            【讨论】:

              【解决方案10】:

              我在 Mysql 上的 Ubuntu 18.04 上遇到问题。当我需要创建新用户时,策略总是很高。

              我想办法为将来来调查的同事禁用的方法设置为低。

              以root身份登录mysql服务器

              mysql -h localhost -u root -p
              

              设置新的验证类型

              SET GLOBAL validate_password_policy=0; //For Low
              

              重启mysql

              sudo service mysql restart
              

              【讨论】:

              • 您必须将此“SET...”命令写入mysql shell。不要 bash shell。
              【解决方案11】:

              在某些安装中,您必须重置根密码才能执行此命令。在执行此命令之前,您无法重置 root 密码。经典的第 22 条军规。

              其他响应者未提及的一个解决方案是通过 mysql 配置暂时禁用该插件。在任何my.cnf 的[mysqld] 部分中,添加:

              skip-validate_password=1
              

              并重新启动服务器。更改密码,并将值重新设置为 0,然后重新启动。

              【讨论】:

              • 这不起作用。你能提到这适用于哪个mysql版本吗?
              【解决方案12】:

              对于参考和未来,应该阅读这里的文档https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-password-validation.html

              然后你应该编辑你的mysqld.cnf 文件,例如:

              vim /etc/mysql/mysql.conf.d/mysqld.cnf
              

              然后,添加 [mysqld] 部分,如下:

              plugin-load-add=validate_password.so
              validate_password_policy=LOW
              

              基本上,如果您编辑默认设置,它将如下所示:

              [mysqld]
              #
              # * Basic Settings
              #
              user            = mysql
              pid-file        = /var/run/mysqld/mysqld.pid
              socket          = /var/run/mysqld/mysqld.sock
              port            = 3306
              basedir         = /usr
              datadir         = /var/lib/mysql
              tmpdir          = /tmp
              lc-messages-dir = /usr/share/mysql
              skip-external-locking
              plugin-load-add=validate_password.so
              validate_password_policy=LOW
              

              然后,您可以重新启动:

              systemctl restart mysql
              

              如果您忘记了plugin-load-add=validate_password.so 部分,您将在重新启动时出错。

              享受吧!

              【讨论】:

                【解决方案13】:

                对于 mysql 8.0.7,转到你的 mysql 目录,然后使用:

                sudo bin/mysql_secure_installation
                

                配置密码选项。

                【讨论】:

                  【解决方案14】:
                  CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
                  GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'localhost'  WITH GRANT OPTION;
                  
                  CREATE USER 'username'@'%' IDENTIFIED BY 'password';
                  GRANT ALL PRIVILEGES ON *.* TO 'organizer'@'%' WITH GRANT OPTION;
                  FLUSH PRIVILEGES;
                  

                  无需停止/启动mysql

                  【讨论】:

                    猜你喜欢
                    • 2014-03-08
                    • 1970-01-01
                    • 2020-02-06
                    • 2013-03-21
                    • 2019-04-28
                    • 2018-02-03
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多