10bet网址
MySQL的安全
相关的文档10bet官方网站 下载这个摘录
PDF (Ltr)- 2.2 mb
PDF (A4)- 2.2 mb
HTML下载(TGZ)- 453.0 kb
HTML下载(邮政编码)- 460.3 kb


6.3密码验证组件

validate_password组件通过要求帐户密码和启用潜在密码的强度测试来提高安全性。该组件公开允许您配置密码策略的系统变量,以及用于组件监控的状态变量。

请注意

在MySQL 8.0中validate_password插件被重新实现为validate_password组件。(有关组件的一般信息,请参见MySQL组件)。下面的说明描述了如何使用组件,而不是插件。的插件形式的使用说明validate_password,请参阅密码验证插件,在MySQL 5.7参考手册

的插件形式validate_password仍然可用,但已弃用;希望它在MySQL的未来版本中被删除。使用该插件的MySQL安装应该转换为使用该组件。看到第6.3.3节“过渡到密码验证组件”

validate_passwordComponent实现了这些功能:

  • 对于分配作为明文值提供的密码的SQL语句,validate_password根据当前密码策略检查密码,如果密码是弱的,则拒绝该密码(语句返回一个ER_NOT_VALID_PASSWORD错误)。这适用于改变用户创建用户,设置密码语句。

  • 创建用户语句,validate_password要求给出一个密码,并且该密码满足密码策略。即使一个帐户最初是锁定的,这也是正确的,因为如果不这样做,以后解锁帐户将导致它可以在不需要满足策略的密码的情况下访问。

  • validate_password实现了一个VALIDATE_PASSWORD_STRENGTH ()评估潜在密码强度的SQL函数。这个函数接受一个密码参数,并返回一个从0(弱)到100(强)的整数。

请注意

对于分配或修改帐户密码的语句(改变用户创建用户,设置密码),validate_password这里描述的功能只适用于使用身份验证插件的帐户,该插件在MySQL内部存储凭据。对于使用插件对MySQL外部的凭证系统执行身份验证的帐户,也必须在外部对该系统进行密码管理。有关内部凭据存储的更多信息,请参见第4.15节“密码管理”

的使用不受上述限制VALIDATE_PASSWORD_STRENGTH ()函数,因为它不直接影响帐户。

例子:

  • validate_password检查以下语句中的明文密码。在默认密码策略(要求密码至少8个字符)下,密码是弱的,语句会产生一个错误:

    mysql> ALTER USER USER() IDENTIFIED BY 'abc';错误1819 (HY000):您的密码不满足当前的策略要求
  • 指定为散列值的密码不会被检查,因为原始密码值无法检查:

    mysql> ALTER USER 'jeffrey'@'localhost' IDENTIFIED WITH mysql_native_password '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';查询OK, 0行受影响(0.01秒)
  • 此帐户创建语句失败,即使帐户最初是锁定的,因为它不包含满足当前密码策略的密码:

    CREATE USER 'juanita'@'localhost' ACCOUNT LOCK;错误1819 (HY000):您的密码不满足当前的策略要求
  • 要检查密码,请使用VALIDATE_PASSWORD_STRENGTH ()功能:

    mysql >选择VALIDATE_PASSWORD_STRENGTH('弱');+------------------------------------+ | VALIDATE_PASSWORD_STRENGTH(“弱 ') | +------------------------------------+ | 25  | +------------------------------------+ mysql >选择VALIDATE_PASSWORD_STRENGTH(“lessweak _@123美元”);+----------------------------------------------+ | VALIDATE_PASSWORD_STRENGTH(“lessweak _@123美元 ') | +----------------------------------------------+ | 50  | +----------------------------------------------+ mysql >选择VALIDATE_PASSWORD_STRENGTH(“N0Tweak $ _@123 !”);+----------------------------------------------+ | VALIDATE_PASSWORD_STRENGTH(“N0Tweak _@123美元 !') | +----------------------------------------------+ | 100年  | +----------------------------------------------+

要配置密码检查,请修改具有该表单名称的系统变量validate_password。xxx;这些是控制密码策略的参数。看到第6.3.2节“密码验证选项和变量”

如果validate_password未安装,则validate_password。xxx系统变量不可用,语句中的密码不被检查,并且VALIDATE_PASSWORD_STRENGTH ()函数总是返回0。例如,在没有安装插件的情况下,帐户可以被分配小于8个字符的密码,或者根本不需要密码。

假设validate_password,它实现了三个级别的密码检查:媒介,强大的.默认值是媒介;要改变这一点,请修改的值validate_password.policy.这些策略实施了越来越严格的密码测试。以下描述均为默认参数值,可通过修改相应的系统变量进行修改。

此外,validate_password支持拒绝与当前会话有效用户帐户的用户名部分相匹配的密码的功能,向前或反向。为了提供对该功能的控制,validate_password公开了一个validate_password.check_user_name系统变量,默认启用。