如何关闭 mysql 密码验证



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

我想卸载插件或以某种方式对其进行阉割。

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

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

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

对于 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

在 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(,它要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且密码总长度至少为 8 个字符。 按照我在这里的建议更改为 LOW,然后只会检查长度,如果没有通过其他参数更改,它将检查长度为 8。 如果您也想缩短该长度限制,您还可以将validate_password_length添加到 my.cnf 文件中。

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


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

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

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

以根身份登录到 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 ...

要在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

卸载:

mysql> uninstall plugin validate_password;

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

安装:

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

通过配置禁用:

[mysqld]
validate_password = OFF

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

如果你想例外,你可以应用以下"hack"。它需要具有DELETEINSERT权限的用户才能mysql.plugin系统表。

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

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

您可以在

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

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

进一步回答 ktbos:

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

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

validate_password_policy=LOW

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

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

我想出如何禁用的方式,对于未来来调查的同事,被设定为低。

以根用户身份登录到 mysql 服务器

mysql -h localhost -u root -p

设置新的验证类型

SET GLOBAL validate_password_policy=0; //For Low

重新启动 mysql

sudo service mysql restart

有关参考和未来,应在此处阅读文档 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部分,则重新启动时将出现错误。

享受!

MySQL 8 中的情况有点不同(但公平地说,技术上更好(。 我放弃了尝试在本地MacOS安装上删除密码。 所以,我意识到,如果你不能打败他们,那就加入他们吧!

这是我的快速和肮脏的解决方案:

  • 通过 HomeBrew 安装 MySQL8(默认情况下,安装为不安全(
  • 编辑了我的~/.zshrc(因为这是我使用的外壳。 其他人可能会使用.bash_profile或其他(
    • nano ~/.zshrc
  • 添加了 2 个别名行
    • alias mysql='mysql -uroot'
    • alias mysqladmin='mysqladmin -uroot'
  • 推送的更改
    • source ~/.zshrc

因此,现在,无需担心使用 -u-p 标志,它们会自动用于mysqlmysqladmin命令。

仅供参考,如果您有密码,这也应该有效。 您只需在别名中包含-pPASSWORD即可。(例如:alias mysql='mysql -uroot -pPASSWORD'(

此外,如果使用任何其他 mysql 命令,则可以添加其他别名行。

仅供参考:不要在生产服务器上执行这些步骤。 我想相信这是不言而喻的...但是,以防万一你不知道更好。

使用以下命令登录到您的 MariaDB 服务器

mysql -u root

mysql -u root -pYOURPASSWORD
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';

FLUSH PRIVILEGES;

在某些安装中,在重置 root 密码之前无法执行此命令。在执行此命令之前,您无法重置 root 密码。经典的 Catch-22。

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

skip-validate_password=1

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

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

sudo bin/mysql_secure_installation

以配置密码选项。

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

相关内容

  • 没有找到相关文章

最新更新