MySQL安全部署指南/安装MySQL密码验证插件

第6章安装MySQL密码验证插件

validate_password插件用于测试密码和提高安全性。该插件公开了一组系统变量,使您能够定义密码策略。

这个插件实现了两个功能:

  • 在指定密码为明文值的语句中,插件会根据当前的密码策略检查密码,如果它是弱密码,则拒绝它。这会影响改变用户创建用户格兰特,设置密码语句。参数指定的密码密码()函数也被检查。

  • VALIDATE_PASSWORD_STRENGTH ()SQL函数可以评估潜在密码的强度。该函数接受一个password参数,并返回一个从0(弱)到100(强)的整数。

validate_password插件提供三个级别的密码检查:媒介,强大的.默认值是媒介;控制的validate_password_policy配置选项。这些策略执行越来越严格的密码测试。

  • 策略只测试密码长度。密码长度至少8个字符。

  • 媒介增加了密码必须包含至少1个数字字符、1个小写字符、1个大写字符和1个特殊字符(非字母数字)的条件。

  • 强大的策略添加了一个条件,长度为4或更长的密码子字符串不能匹配字典文件中的单词(如果指定了的话)。

此外,validate_password插件可以拒绝与当前会话有效用户帐户的用户名部分匹配的密码,正向或反向。要启用此功能,您必须启用validate_password_check_user_name系统变量。

安装和配置密码验证插件:

  1. 将这些选项添加到(mysqld)选项组的MySQL配置文件(/etc/my.cnf):

    plugin-load-add = validate_password.sovalidate-password = FORCE_PLUS_PERMANENTvalidate_password_policy =媒介validate_password_check_user_name = 1
    • plugin-load-add = validate_password.so

      加载validate_password.so每次服务器启动时的插件库。

    • validate-password = FORCE_PLUS_PERMANENT

      防止服务器在没有密码验证插件的情况下运行,如果插件没有初始化成功,服务器启动将失败。

    • validate_password_policy =媒介

      长度至少8个字符,包含1个数字字符、1个小写字符、1个大写字符和1个特殊字符(非字母数字)。媒介是默认设置。

    • validate_password_check_user_name = 1

      拒绝与当前会话有效用户帐户的用户名部分相匹配的密码(正向或反向)。

  2. 要验证插件安装,请重新启动服务器并检查INFORMATION_SCHEMA。插件表格或使用显示插件声明:

    Shell > systemctl restart mysqld
    shell> cd /usr/local/mysql shell> bin/mysqladmin -u root -p version输入password:(在这里输入root密码)
    从INFORMATION_SCHEMA中选择PLUGIN_NAME, PLUGIN_STATUS。PLUGIN_NAME像'validate%';+-------------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS  | +-------------------+---------------+ | validate_password |活跃  | +-------------------+---------------+
  3. 为了验证密码验证插件是否正常工作,尝试创建一个密码不符合要求的用户:

    创建用户bob。smith'@'localhost' IDENTIFIED BY 'abc';错误1819 (HY000):您的密码不符合当前的策略要求

有关密码验证插件的更多信息,请参见密码验证插件