似乎我无意中在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

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


当前回答

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

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

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

其他回答

对于参考文献和未来,你应该阅读这里的文档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。所以部分,你会在重新启动时出现错误。

享受吧!

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

UNINSTALL COMPONENT 'file://component_validate_password';

要重新安装它,命令是:

INSTALL COMPONENT 'file://component_validate_password';

如果您只是想更改密码验证插件的策略:

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

在某些安装中,除非重置了根密码,否则无法执行此命令。执行该命令前,不能重置root用户密码。经典的第二十二条军规。

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

skip-validate_password=1

并重新启动服务器。请修改密码并重新设置为0,然后重新启动系统。

根据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文档获取最新信息。

卸载:

mysql> uninstall plugin validate_password;

show plugins不会显示卸载的插件;

安装:

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

配置禁用:

[mysqld]
validate_password = OFF

只有安装了插件,才能通过配置禁用该插件。