该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.sovalidate_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
有关密码验证插件的更多信息,请参阅 密码验证插件。