介绍系统和状态变量validate_password
提供使其操作能够被配置和监视。
如果validate_password
组件被启用时,它会暴露几个系统变量,以启用密码检查的配置:
mysql>显示变量'validate_password.%';+--------------------------------------+--------+ | Variable_name |值 | +--------------------------------------+--------+ | validate_password。check_user_name | ON | | validate_password。Dictionary_file | | | validate_password。长度| 8 | | validate_password。Mixed_case_count | 1 | | validate_password. .Number_count | 1 | | validate_password. .policy | MEDIUM | | validate_password. .special_char_count | 1 | +--------------------------------------+--------+
若要更改密码检查方式,可以在服务器启动时或运行时设置这些系统变量。下面的列表描述了每个变量的含义。
validate_password.check_user_name
命令行格式 ——validate-password.check-user-name[={|在}]
系统变量 validate_password.check_user_name
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
是否
validate_password
将密码与当前会话的有效用户帐户的用户名部分进行比较,如果匹配则拒绝它们。此变量不可用,除非validate_password
安装。默认情况下,
validate_password.check_user_name
启用。的值无关,此变量控制用户名匹配validate_password.policy
.当
validate_password.check_user_name
启用时,它具有以下效果:的所有上下文中都会进行检查
validate_password
调用,其中包括使用诸如改变用户
或设置密码
更改当前用户的密码,并调用函数如VALIDATE_PASSWORD_STRENGTH ()
.的值中获取用于比较的用户名
用户()
而且CURRENT_USER ()
函数用于当前会话。这意味着,拥有足够权限设置其他用户密码的用户可以将密码设置为该用户的名称,而不能将该用户的密码设置为执行该语句的用户的名称。例如,“根”@“localhost”
可以设置密码为“杰弗里”@“localhost”
来“杰弗里。”
,但密码不能设置为“根
.的用户名部分
用户()
而且CURRENT_USER ()
使用的是函数值,而不是主机名部分。如果用户名为空,则不进行比较。如果密码与用户名或其倒序相同,则进行匹配并拒绝密码。
用户名匹配区分大小写。密码和用户名值作为二进制字符串逐字节进行比较。
如果密码与用户名匹配,
VALIDATE_PASSWORD_STRENGTH ()
返回0,不管其他如何validate_password
完成系统变量的设置。
validate_password.dictionary_file
命令行格式 ——validate-password.dictionary-file = file_name
系统变量 validate_password.dictionary_file
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 文件名称 该字典文件的路径名
validate_password
用于检查密码。此变量不可用,除非validate_password
安装。默认情况下,该变量为空值,不执行字典检查。要进行字典检查,变量值必须非空。如果将文件命名为相对路径,则它将相对于服务器数据目录进行解释。文件内容应该是小写的,每行一个字。内容被视为具有的字符集
use utf8
.允许的最大文件大小为1MB。对于密码检查时使用的字典文件,密码策略必须设置为2 (
强大的
);的描述validate_password.policy
系统变量。假设这是正确的,长度为4到100的密码的每个子字符串都将与字典文件中的单词进行比较。任何匹配都会导致密码被拒绝。比较不区分大小写。为
VALIDATE_PASSWORD_STRENGTH ()
时,密码会根据所有策略进行检查,包括强大的
,因此强度评估包括字典检查,无论validate_password.policy
价值。validate_password.dictionary_file
可以在运行时设置,并且分配一个值可以使已命名的文件在不重启服务器的情况下被读取。-
命令行格式 ——validate-password.length = #
系统变量 validate_password.length
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 8
最小值 0
所需要的最小字符数
validate_password
需要密码。此变量不可用,除非validate_password
安装。的
validate_password.length
最小值是其他几个相关系统变量的函数。该值不能设置为小于此表达式的值:validate_password.number_count+ validate_password.special_char_count + (2 * validate_password.mixed_case_count)
如果
validate_password
调整的值validate_password.length
由于前面的约束,它将一条消息写入错误日志。 validate_password.mixed_case_count
命令行格式 ——validate-password.mixed-case-count = #
系统变量 validate_password.mixed_case_count
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
最小值 0
所需要的小写和大写字符的最小数目
validate_password
如果密码策略为,则要求密码为媒介
或者更强。此变量不可用,除非validate_password
安装。对于给定条件
validate_password.mixed_case_count
值时,密码必须有那么多小写字符和那么多大写字符。validate_password.number_count
命令行格式 ——validate-password.number-count = #
系统变量 validate_password.number_count
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
最小值 0
允许使用的最小数字(数字)字符数
validate_password
如果密码策略为,则要求密码为媒介
或者更强。此变量不可用,除非validate_password
安装。-
命令行格式 ——validate-password.policy =值
系统变量 validate_password.policy
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 1
有效值 0
1
2
强制的密码策略
validate_password
.此变量不可用,除非validate_password
安装。validate_password.policy
影响如何validate_password
使用它的其他策略设置系统变量,除了根据用户名检查密码,这是由validate_password.check_user_name
.的
validate_password.policy
Value可以使用数值0、1、2或相应的符号值指定低
,媒介
,强大的
.下表描述了为每个策略执行的测试。对于长度测试,所需的长度是validate_password.length
系统变量。类似地,其他测试所需的值由other给出validate_password。
变量。xxx
政策 测试执行 0
或低
长度 1
或媒介
长度;数字、大写/小写、特殊字符 2
或强大的
长度;数字、大写/小写、特殊字符;字典文件 validate_password.special_char_count
命令行格式 ——validate-password.special-char-count = #
系统变量 validate_password.special_char_count
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
最小值 0
满足的非字母数字字符的最小数目
validate_password
如果密码策略为,则要求密码为媒介
或者更强。此变量不可用,除非validate_password
安装。
如果validate_password
组件时,它会公开提供操作信息的状态变量:
mysql>显示STATUS LIKE 'validate_password.%';+-----------------------------------------------+---------------------+ | Variable_name |值 | +-----------------------------------------------+---------------------+ | validate_password。Dictionary_file_last_parsed | 2019-10-03 08:33:49 | | validate_password。dictionary_file_words_count | 1902 | +-----------------------------------------------+---------------------+
下面的列表描述了每个状态变量的含义。
validate_password.dictionary_file_last_parsed
最后一次解析字典文件时。此变量不可用,除非
validate_password
安装。validate_password.dictionary_file_words_count
从字典文件中读取的字数。此变量不可用,除非
validate_password
安装。
在MySQL 8.0中validate_password
插件被重新实现为validate_password
组件。的validate_password
插件已弃用;希望它在MySQL的未来版本中被移除。因此,它的选项也被弃用了,您应该期望它们也会被删除。使用插件的MySQL安装应该转而使用组件。看到第6.4.3.3节,“过渡到密码验证组件”.
来控制激活validate_password
插件,使用这个选项:
-
命令行格式 ——validate-password(=价值)
类型 枚举 默认值 在
有效值 在
从
力
FORCE_PLUS_PERMANENT
此选项控制服务器如何加载已弃用的文件
validate_password
插件启动时。该值应该是插件加载选项可用的值之一,如中所述章节5.6.1,“安装和卸载插件”.例如,——validate-password = FORCE_PLUS_PERMANENT
告诉服务器在启动时加载插件,并防止在服务器运行时删除它。此选项仅在
validate_password
插件已经注册安装插件
或者装载了——plugin-load-add
.看到章节6.4.3.1密码验证组件安装与卸载.
在MySQL 8.0中validate_password
插件被重新实现为validate_password
组件。的validate_password
插件已弃用;希望它在MySQL的未来版本中被移除。因此,它的系统变量也被弃用了,您应该期望它们也会被删除。的对应系统变量validate_password
组件而不是;看到密码验证组件系统变量.使用插件的MySQL安装应该转而使用组件。看到第6.4.3.3节,“过渡到密码验证组件”.
validate_password_check_user_name
命令行格式 ——validate-password-check-user-name[={|在}]
系统变量 validate_password_check_user_name
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 布尔 默认值 在
这
validate_password
插件系统变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.check_user_name
的系统变量validate_password
组件。validate_password_dictionary_file
命令行格式 ——validate-password-dictionary-file = file_name
系统变量 validate_password_dictionary_file
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 文件名称 这
validate_password
插件系统变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.dictionary_file
的系统变量validate_password
组件。-
命令行格式 ——validate-password-length = #
系统变量 validate_password_length
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 8
最小值 0
这
validate_password
插件系统变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.length
的系统变量validate_password
组件。 validate_password_mixed_case_count
命令行格式 ——validate-password-mixed-case-count = #
系统变量 validate_password_mixed_case_count
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
最小值 0
这
validate_password
插件系统变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.mixed_case_count
的系统变量validate_password
组件。validate_password_number_count
命令行格式 ——validate-password-number-count = #
系统变量 validate_password_number_count
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
最小值 0
这
validate_password
插件系统变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.number_count
的系统变量validate_password
组件。-
命令行格式 ——validate-password-policy =值
系统变量 validate_password_policy
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 枚举 默认值 1
有效值 0
1
2
这
validate_password
插件系统变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.policy
的系统变量validate_password
组件。 validate_password_special_char_count
命令行格式 ——validate-password-special-char-count = #
系统变量 validate_password_special_char_count
范围 全球 动态 是的 SET_VAR
提示应用没有 类型 整数 默认值 1
最小值 0
这
validate_password
插件系统变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.special_char_count
的系统变量validate_password
组件。
在MySQL 8.0中validate_password
插件被重新实现为validate_password
组件。的validate_password
插件已弃用;希望它在MySQL的未来版本中被移除。因此,它的状态变量也不建议使用;期望它被删除。的相应状态变量validate_password
组件;看到密码验证组件状态变量.使用插件的MySQL安装应该转而使用组件。看到第6.4.3.3节,“过渡到密码验证组件”.
validate_password_dictionary_file_last_parsed
这
validate_password
插件状态变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.dictionary_file_last_parsed
状态变量validate_password
组件。validate_password_dictionary_file_words_count
这
validate_password
插件状态变量已弃用;希望它在MySQL的未来版本中被移除。使用相应的validate_password.dictionary_file_words_count
状态变量validate_password
组件。