如何关闭 mysql 密码验证?
How do I turn off the mysql password validation?
看来我可能不小心在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 -h localhost -u root -p
身份登录 mysql 服务器
- 运行 以下 sql 命令:
uninstall plugin validate_password;
- 如果最后一行不起作用(新 mysql 版本),您应该执行
UNINSTALL COMPONENT 'file://component_validate_password';
I would not recommend this solution for a production system. I used
this solution on a local mysql instance for development purposes only.
你可以在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。根据您的 OS,它看起来像:
sudo service mysqld restart
validate_password_policy 取值 0、1 或 2 或与这些数字对应的单词 LOW、MEDIUM 和 STRONG。默认为 MEDIUM (1),要求密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符,并且密码总长度至少为 8 个字符。按照我在这里的建议更改为 LOW 然后只会检查长度,如果它没有通过其他参数更改,将检查长度为 8。如果你也想缩短该长度限制,你也可以添加 validate_password_length 到 my.cnf 文件中。
有关级别和详细信息的更多信息,请参阅the mysql doc。
对于 MySQL 8,属性 已从 "validate_password_policy" 更改为 "validate_password.policy"。有关最新信息,请参阅更新后的 mysql doc。
如需破例,可套用以下"hack"。它需要对 mysql.plugin
系统 table.
具有 DELETE
and INSERT
权限的用户
uninstall plugin validate_password;
SET PASSWORD FOR 'app' = PASSWORD('abcd');
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
平淡无奇的安全免责声明:考虑一下,为什么要使密码更短或更简单,或许可以考虑将其替换为更复杂的密码。但是,我理解 "it's 3AM and just needs to work" 时刻,只是确保你不构建黑客系统,以免你自己被黑客攻击
进一步了解 ktbos 的回答:
我修改了mysqld.cnf文件,mysql启动失败。
原来是我修改错了文件!
因此请确保您修改的文件包含 [mysqld_safe] 和 [mysqld] 等段标记。在后者下我按照建议做了并添加了行:
validate_password_policy=LOW
这完美地解决了我的密码中不需要特殊字符的问题。
要在 mariadb-10.1.24 (Fedora 24) 中禁用密码检查,我必须在 /etc/my.cnf.d/cracklib_password_check.cnf[=17 中注释掉一行=] 文件:
;plugin-load-add=cracklib_password_check.so
然后重启mariadb服务:
systemctl restart mariadb.service
对于 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
我在 Ubuntu 18.04 Mysql 上遇到了问题。当我需要创建新用户时,策略总是很高。
我想出了如何禁用的方式,以供未来前来调查的同事使用。
以 root 身份登录 mysql 服务器
mysql -h localhost -u root -p
设置新的验证类型
SET GLOBAL validate_password_policy=0; //For Low
重启mysql
sudo service mysql restart
对于 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;
不需要stop/startmysql
卸载:
mysql> uninstall plugin validate_password;
show plugins;
未显示已卸载的插件
安装:
mysql> install plugin validate_password SONAME 'validate_password.so';
配置禁用:
[mysqld]
validate_password = OFF
插件只有在安装后才能通过配置禁用。
在某些安装中,您必须重置 root 密码才能执行此命令。在执行此命令之前,您无法重置 root 密码。经典的第 22 条军规。
其他响应者未提及的一种解决方案是通过 mysql 配置暂时禁用该插件。在任何 my.cnf
的 [mysqld]
部分,添加:
skip-validate_password=1
并重启服务器。更改密码,并将值设置回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
部分,您将在重新启动时出错。
尽情享受吧!
回复你的问题:如何关闭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 ...
MySQL8 (但公平地说,技术上更好) 的情况有所不同。我放弃了尝试删除本地 MacOS 安装上的密码。所以,我意识到,如果你不能打败他们,那就加入他们吧!
这是我的快速粗略的解决方案:
- 通过 HomeBrew 安装 MySQL8(默认情况下,安装为不安全)
- 编辑了我的 ~/.zshrc (因为这是我使用的 shell。其他人可能会使用 .bash_profile 或其他)
nano ~/.zshrc
- 添加了 2 条别名行
alias mysql='mysql -uroot'
alias mysqladmin='mysqladmin -uroot'
- 推送更改
source ~/.zshrc
所以现在,不用担心使用 -u
或 -p
标志,它们会自动用于 mysql
或 mysqladmin
命令。
仅供参考,如果您有密码,这也应该有效。您只需在别名中包含 -pPASSWORD
即可。
(例如:alias mysql='mysql -uroot -pPASSWORD'
)
此外,如果您使用任何其他 mysql
命令,您可以添加额外的别名行。
仅供参考:请勿在生产服务器上执行这些步骤。
我相信这是不言而喻的……但是,以防万一你不知道。
看来我可能不小心在MySQL 5.7中加载了密码验证插件。这个插件似乎强制所有密码遵守某些规则。
我想关闭它。
我已经尝试按照建议
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 -h localhost -u root -p
身份登录 mysql 服务器
- 运行 以下 sql 命令:
uninstall plugin validate_password;
- 如果最后一行不起作用(新 mysql 版本),您应该执行
UNINSTALL COMPONENT 'file://component_validate_password';
I would not recommend this solution for a production system. I used this solution on a local mysql instance for development purposes only.
你可以在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。根据您的 OS,它看起来像:
sudo service mysqld restart
validate_password_policy 取值 0、1 或 2 或与这些数字对应的单词 LOW、MEDIUM 和 STRONG。默认为 MEDIUM (1),要求密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符,并且密码总长度至少为 8 个字符。按照我在这里的建议更改为 LOW 然后只会检查长度,如果它没有通过其他参数更改,将检查长度为 8。如果你也想缩短该长度限制,你也可以添加 validate_password_length 到 my.cnf 文件中。
有关级别和详细信息的更多信息,请参阅the mysql doc。
对于 MySQL 8,属性 已从 "validate_password_policy" 更改为 "validate_password.policy"。有关最新信息,请参阅更新后的 mysql doc。
如需破例,可套用以下"hack"。它需要对 mysql.plugin
系统 table.
DELETE
and INSERT
权限的用户
uninstall plugin validate_password;
SET PASSWORD FOR 'app' = PASSWORD('abcd');
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
平淡无奇的安全免责声明:考虑一下,为什么要使密码更短或更简单,或许可以考虑将其替换为更复杂的密码。但是,我理解 "it's 3AM and just needs to work" 时刻,只是确保你不构建黑客系统,以免你自己被黑客攻击
进一步了解 ktbos 的回答:
我修改了mysqld.cnf文件,mysql启动失败。 原来是我修改错了文件!
因此请确保您修改的文件包含 [mysqld_safe] 和 [mysqld] 等段标记。在后者下我按照建议做了并添加了行:
validate_password_policy=LOW
这完美地解决了我的密码中不需要特殊字符的问题。
要在 mariadb-10.1.24 (Fedora 24) 中禁用密码检查,我必须在 /etc/my.cnf.d/cracklib_password_check.cnf[=17 中注释掉一行=] 文件:
;plugin-load-add=cracklib_password_check.so
然后重启mariadb服务:
systemctl restart mariadb.service
对于 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
我在 Ubuntu 18.04 Mysql 上遇到了问题。当我需要创建新用户时,策略总是很高。
我想出了如何禁用的方式,以供未来前来调查的同事使用。
以 root 身份登录 mysql 服务器
mysql -h localhost -u root -p
设置新的验证类型
SET GLOBAL validate_password_policy=0; //For Low
重启mysql
sudo service mysql restart
对于 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;
不需要stop/startmysql
卸载:
mysql> uninstall plugin validate_password;
show plugins;
安装:
mysql> install plugin validate_password SONAME 'validate_password.so';
配置禁用:
[mysqld]
validate_password = OFF
插件只有在安装后才能通过配置禁用。
在某些安装中,您必须重置 root 密码才能执行此命令。在执行此命令之前,您无法重置 root 密码。经典的第 22 条军规。
其他响应者未提及的一种解决方案是通过 mysql 配置暂时禁用该插件。在任何 my.cnf
的 [mysqld]
部分,添加:
skip-validate_password=1
并重启服务器。更改密码,并将值设置回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
部分,您将在重新启动时出错。
尽情享受吧!
回复你的问题:如何关闭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 ...
MySQL8 (但公平地说,技术上更好) 的情况有所不同。我放弃了尝试删除本地 MacOS 安装上的密码。所以,我意识到,如果你不能打败他们,那就加入他们吧!
这是我的快速粗略的解决方案:
- 通过 HomeBrew 安装 MySQL8(默认情况下,安装为不安全)
- 编辑了我的 ~/.zshrc (因为这是我使用的 shell。其他人可能会使用 .bash_profile 或其他)
nano ~/.zshrc
- 添加了 2 条别名行
alias mysql='mysql -uroot'
alias mysqladmin='mysqladmin -uroot'
- 推送更改
source ~/.zshrc
所以现在,不用担心使用 -u
或 -p
标志,它们会自动用于 mysql
或 mysqladmin
命令。
仅供参考,如果您有密码,这也应该有效。您只需在别名中包含 -pPASSWORD
即可。
(例如:alias mysql='mysql -uroot -pPASSWORD'
)
此外,如果您使用任何其他 mysql
命令,您可以添加额外的别名行。
仅供参考:请勿在生产服务器上执行这些步骤。
我相信这是不言而喻的……但是,以防万一你不知道。