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

我想把这个关了。

我已经尝试按照这里的建议更改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

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


当前回答

进一步回答ktbos的问题:

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

因此,请确保您修改的文件包含像[mysqld_safe]和[mysqld]这样的段标记。在后者下面,我按照建议加了一行:

validate_password_policy=LOW

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

其他回答

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

以root用户登录mysql服务器mysql -h localhost -u root -p 执行如下sql命令:uninstall plugin validate_password; 如果最后一行不行(mysql新版本),你应该执行卸载COMPONENT 'file://component_validate_password';

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

你可以在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

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

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

validate_password_policy=LOW

这应该足以中和op所要求的验证。在这个更改之后,您可能需要重新启动mysqld。根据你的操作系统,它看起来像这样:

sudo service mysqld restart

validate_password_policy takes either values 0, 1, or 2 or words LOW, MEDIUM, and STRONG which correspond to those numbers. The default is MEDIUM (1) which requires passwords contain at least one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters. Changing to LOW as I suggest here then only will check for length, which if it hasn't been changed through other parameters will check for a length of 8. If you wanted to shorten that length limit too, you could also add validate_password_length in to the my.cnf file.

有关级别和细节的更多信息,请参阅mysql文档。


对于MySQL 8,属性已经从“validate_password_policy”更改为“validate_password.policy”。请参阅更新后的mysql文档获取最新信息。

如果你想做例外,你可以应用下面的“hack”。它要求mysql用户具有DELETE和INSERT权限。插件系统表。

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

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

进一步回答ktbos的问题:

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

因此,请确保您修改的文件包含像[mysqld_safe]和[mysqld]这样的段标记。在后者下面,我按照建议加了一行:

validate_password_policy=LOW

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