188

看来我可能无意中在 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

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

4

14 回答 14

493

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

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

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

于 2016-07-23T05:51:07.000 回答
72

对于 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
于 2018-07-28T23:10:53.527 回答
34

基于 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 文件。

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


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

于 2017-02-28T10:41:39.487 回答
6

要在 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
于 2017-06-21T18:53:02.623 回答
4

您可以在 mysql 配置文件 open /etc/my.cnffile 中配置此文件 在此文件中,所有配置密码策略的行都像

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

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

于 2016-09-23T10:55:16.443 回答
4

如果要例外,可以应用以下“hack”。它需要具有系统表权限DELETE的用户。INSERTmysql.plugin

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

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

于 2017-03-10T20:57:35.930 回答
3

卸载:

mysql> uninstall plugin validate_password;

未显示的已卸载插件show plugins;

安装:

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

通过配置禁用:

[mysqld]
validate_password = OFF

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

于 2019-05-31T12:38:05.517 回答
3

回答您的问题:如何关闭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 ...

于 2021-05-13T07:48:00.250 回答
2

除了 ktbos 的回答:

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

所以要确保你修改的文件包含像 [mysqld_safe] 和 [mysqld] 这样的段标签。在后者下,我按照建议做了并添加了以下行:

validate_password_policy=LOW

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

于 2017-05-30T10:22:44.970 回答
1

我在 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
于 2018-07-29T18:23:00.007 回答
0

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

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

skip-validate_password=1

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

于 2020-05-03T21:58:10.767 回答
0

对于参考和未来,应该在这里阅读文档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部分,您将在重新启动时出错。

享受 !

于 2020-05-04T14:09:20.680 回答
-2

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

sudo bin/mysql_secure_installation

配置密码选项。

于 2018-08-08T09:50:48.313 回答
-3
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

于 2019-01-21T19:41:22.577 回答