该validate_password
插件用于测试密码并提高安全性。该插件公开了一组系统变量,使您能够定义密码策略。
该插件实现了两个功能:
在分配作为明文值提供的密码的语句中,插件根据当前密码策略检查密码,如果它很弱则拒绝它。这会影响
ALTER USER
、CREATE USER
、GRANT
和SET PASSWORD
语句。作为函数参数给出的密码PASSWORD()
也会被检查。VALIDATE_PASSWORD_STRENGTH()
SQL 函数评估潜在密码的强度 。 该函数接受一个密码参数并返回一个从 0(弱)到 100(强)的整数。
该validate_password
插件提供三个级别的密码检查:LOW
、
MEDIUM
和STRONG
。默认是MEDIUM
; 由
validate_password_policy
配置选项控制。这些政策实施越来越严格的密码测试。
该
LOW
策略仅测试密码长度。密码长度必须至少为 8 个字符。该
MEDIUM
策略添加了密码必须包含至少 1 个数字字符、1 个小写字符、1 个大写字符和 1 个特殊(非字母数字)字符的条件。该
STRONG
策略添加了一个条件,即长度为 4 或更长的密码子字符串不得与字典文件中的单词匹配(如果已指定的话)。
此外,该validate_password
插件可以拒绝与当前会话的有效用户帐户的用户名部分匹配的密码,无论是正向还是反向。要启用此功能,您必须启用
validate_password_check_user_name
系统变量。
安装和配置密码验证插件:
-
[mysqld]
在 MySQL 配置文件 ( ) 的选项组下添加这些选项/etc/my.cnf
:plugin-load-add=validate_password.so validate-password=FORCE_PLUS_PERMANENT validate_password_policy=MEDIUM validate_password_check_user_name=1
-
plugin-load-add=validate_password.so
validate_password.so
每次启动服务器时 加载插件库。 -
validate-password=FORCE_PLUS_PERMANENT
防止服务器在没有密码验证插件的情况下运行,如果插件未成功初始化,则服务器启动失败。
-
validate_password_policy=MEDIUM
指定密码长度必须至少为 8 个字符,至少包含 1 个数字字符、1 个小写字符、1 个大写字符和 1 个特殊(非字母数字)字符。
MEDIUM
是默认设置。 -
validate_password_check_user_name=1
拒绝与当前会话的有效用户帐户的用户名部分相匹配的密码,正向或反向。
-
-
要验证插件安装,请重新启动服务器并检查
INFORMATION_SCHEMA.PLUGINS
表或使用以下SHOW PLUGINS
语句:$> systemctl restart mysqld
$> cd /usr/local/mysql $> bin/mysqladmin -u root -p version Enter password: (enter root password here)
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'validate%'; +-------------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +-------------------+---------------+ | validate_password | ACTIVE | +-------------------+---------------+
-
要验证密码验证插件是否有效,请尝试使用不合规的密码创建用户:
mysql> CREATE USER 'bob.smith'@'localhost' IDENTIFIED BY 'abc'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
有关密码验证插件的更多信息,请参阅 密码验证插件。