除非安装了适当的服务器端插件,否则这些变量不可用:
authentication_ldap_sasl
对于名称为以下形式的系统变量authentication_ldap_sasl_
xxx
authentication_ldap_simple
对于名称为以下形式的系统变量authentication_ldap_simple_
xxx
表 6.29 身份验证插件系统变量摘要
-
命令行格式 --authentication-fido-rp-id=value
介绍 8.0.27 系统变量 authentication_fido_rp_id
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 MySQL
此变量指定用于 FIDO 设备注册和 FIOD 身份验证的依赖方 ID。如果尝试进行 FIDO 身份验证并且此值不是 FIDO 设备预期的值,则该设备会假定它没有与正确的服务器通信,并且会发生错误。最大值长度为 255 个字符。
authentication_kerberos_service_key_tab
命令行格式 --authentication-kerberos-service-key-tab=file_name
介绍 8.0.26 系统变量 authentication_kerberos_service_key_tab
范围 全球的 动态的 不 SET_VAR
提示适用不 类型 文件名 默认值 datadir/mysql.keytab
服务器端密钥表(“ keytab ”)文件的名称,其中包含 Kerberos 服务密钥,用于验证从客户端收到的 MySQL 服务票证。文件名应作为绝对路径名给出。如果未设置此变量,则默认
mysql.keytab
位于数据目录中。该文件必须存在并包含服务主体名称 (SPN) 的有效密钥,否则客户端身份验证将失败。(SPN 和相同的密钥也必须在 Kerberos 服务器中创建。)该文件可能包含多个服务主体名称及其各自的密钥组合。
该文件必须由 Kerberos 服务器管理员生成,并复制到 MySQL 服务器可访问的位置。可以验证该文件以确保它是正确的并且使用此命令已正确复制:
klist -k file_name
有关密钥表文件的信息,请参阅 https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html。
authentication_kerberos_service_principal
命令行格式 --authentication-kerberos-service-principal=name
介绍 8.0.26 系统变量 authentication_kerberos_service_principal
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 mysql/host_name@realm_name
MySQL 服务器发送给客户端的 Kerberos 服务主体名称 (SPN)。
该值由服务名称 (
mysql
)、主机名和领域名称组成。默认值为 。服务主体名称中的领域允许检索准确的服务密钥。mysql/
host_name
@realm_name
要使用非默认值,请使用相同的格式设置值。例如,要使用主机名
krbauth.example.com
和领域MYSQL.LOCAL
,请设置authentication_kerberos_service_principal
为mysql/krbauth.example.com@MYSQL.LOCAL
。服务主体名称和服务密钥必须已存在于 KDC 服务器管理的数据库中。
可以有仅域名不同的服务主体名称。
authentication_ldap_sasl_auth_method_name
命令行格式 --authentication-ldap-sasl-auth-method-name=value
系统变量 authentication_ldap_sasl_auth_method_name
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 SCRAM-SHA-1
有效值 (≥ 8.0.23) SCRAM-SHA-1
SCRAM-SHA-256
GSSAPI
有效值(≥ 8.0.20,≤ 8.0.22) SCRAM-SHA-1
GSSAPI
有效值(≤ 8.0.19) SCRAM-SHA-1
对于 SASL LDAP 身份验证,身份验证方法名称。认证插件和LDAP服务器之间的通信是根据这种认证方式进行的,以确保密码安全。
这些身份验证方法值是允许的:
SCRAM-SHA-1
: 使用 SASL 质询-响应机制。客户端
authentication_ldap_sasl_client
插件与 SASL 服务器通信,使用密码创建挑战并获得 SASL 请求缓冲区,然后将此缓冲区传递给服务器端authentication_ldap_sasl
插件。客户端和服务器端 SASL LDAP 插件使用 SASL 消息在 LDAP 协议中安全传输凭证,以避免在 MySQL 客户端和服务器之间发送明文密码。SCRAM-SHA-256
: 使用 SASL 质询-响应机制。此方法与 类似
SCRAM-SHA-1
,但更安全。它在 MySQL 8.0.23 及更高版本中可用。它需要使用 Cyrus SASL 2.1.27 或更高版本构建的 OpenLDAP 服务器。GSSAPI
:使用 Kerberos,一种无密码且基于票证的协议。仅在 Linux 上支持 GSSAPI/Kerberos 作为 MySQL 客户端和服务器的身份验证方法。它在 Linux 环境中很有用,在该环境中,应用程序使用默认启用 Kerberos 的 Microsoft Active Directory 访问 LDAP。
客户端
authentication_ldap_sasl_client
插件使用来自 Kerberos 的票证授予票证 (TGT) 获取服务票证,但不直接使用 LDAP 服务。服务器端authentication_ldap_sasl
插件在客户端插件和 LDAP 服务器之间路由 Kerberos 消息。使用如此获得的凭据,服务器端插件然后与 LDAP 服务器通信以解释 LDAP 身份验证消息并检索 LDAP 组。
authentication_ldap_sasl_bind_base_dn
命令行格式 --authentication-ldap-sasl-bind-base-dn=value
系统变量 authentication_ldap_sasl_bind_base_dn
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于 SASL LDAP 身份验证,基本专有名称 (DN)。此变量可用于通过将搜索锚定在 搜索树 中的特定位置( “基” )来限制搜索范围。
假设一组 LDAP 用户条目的每个成员都具有以下形式:
uid=user_name,ou=People,dc=example,dc=com
另一组 LDAP 用户条目的每个成员都具有以下形式:
uid=user_name,ou=Admin,dc=example,dc=com
然后像这样搜索不同的基本 DN 值:
如果基本 DN 是
ou=People,dc=example,dc=com
:搜索仅在第一组中查找用户条目。如果基本 DN 是
ou=Admin,dc=example,dc=com
:搜索仅在第二组中查找用户条目。如果基本 DN 是
ou=dc=example,dc=com
:搜索查找第一组或第二组中的用户条目。
通常,更具体的基本 DN 值会导致更快的搜索,因为它们会更多地限制搜索范围。
authentication_ldap_sasl_bind_root_dn
命令行格式 --authentication-ldap-sasl-bind-root-dn=value
系统变量 authentication_ldap_sasl_bind_root_dn
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于 SASL LDAP 身份验证,根专有名称 (DN)。此变量与 一起
authentication_ldap_sasl_bind_root_pwd
用作凭据,用于向 LDAP 服务器进行身份验证以执行搜索。身份验证使用一个或两个 LDAP 绑定操作,具体取决于 MySQL 帐户是否命名 LDAP 用户 DN:如果帐户未命名用户 DN: 使用 和
authentication_ldap_sasl
执行初始 LDAP 绑定 。(默认情况下它们都是空的,因此如果未设置它们,LDAP 服务器必须允许匿名连接。)生成的绑定 LDAP 句柄用于根据客户端用户名搜索用户 DN。 使用用户 DN 和客户端提供的密码执行第二次绑定。authentication_ldap_sasl_bind_root_dn
authentication_ldap_sasl_bind_root_pwd
authentication_ldap_sasl
如果该帐户确实命名了一个用户 DN:在这种情况下,第一个绑定操作是不必要的。
authentication_ldap_sasl
使用用户 DN 和客户端提供的密码执行单个绑定。这比 MySQL 帐户不指定 LDAP 用户 DN 更快。
authentication_ldap_sasl_bind_root_pwd
命令行格式 --authentication-ldap-sasl-bind-root-pwd=value
系统变量 authentication_ldap_sasl_bind_root_pwd
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于 SASL LDAP 身份验证,root 专有名称的密码。此变量与 结合使用
authentication_ldap_sasl_bind_root_dn
。请参阅该变量的说明。authentication_ldap_sasl_ca_path
命令行格式 --authentication-ldap-sasl-ca-path=value
系统变量 authentication_ldap_sasl_ca_path
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于 SASL LDAP 身份验证,证书颁发机构文件的绝对路径。如果希望身份验证插件执行 LDAP 服务器证书的验证,请指定此文件。
笔记除了将
authentication_ldap_sasl_ca_path
变量设置为文件名之外,您还必须将适当的证书颁发机构证书添加到文件并启用authentication_ldap_sasl_tls
系统变量。可以设置这些变量来覆盖默认的 OpenLDAP TLS 配置;请参阅 LDAP 可插入身份验证和 ldap.confauthentication_ldap_sasl_group_search_attr
命令行格式 --authentication-ldap-sasl-group-search-attr=value
系统变量 authentication_ldap_sasl_group_search_attr
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 cn
对于 SASL LDAP 身份验证,指定 LDAP 目录条目中组名的属性的名称。如果
authentication_ldap_sasl_group_search_attr
其默认值为cn
,搜索将返回该cn
值作为组名称。例如,如果uid
值为的 LDAP 条目user1
的cn
属性为mygroup
,则搜索user1
returnmygroup
作为组名。如果您不需要组或代理身份验证,则此变量应该为空字符串。
如果组搜索属性为
isMemberOf
,LDAP 认证直接检索用户属性isMemberOf
值并将其分配为组信息。如果组搜索属性不是isMemberOf
,则 LDAP 身份验证会搜索用户所属的所有组。(后者是默认行为。)此行为基于如何以两种方式存储 LDAP 组信息:1) 组条目可以具有名为 用户名memberUid
或member
值为用户名的属性;2) 用户条目可以有一个属性,该属性以isMemberOf
组名的值命名。authentication_ldap_sasl_group_search_filter
命令行格式 --authentication-ldap-sasl-group-search-filter=value
系统变量 authentication_ldap_sasl_group_search_filter
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 (|(&(objectClass=posixGroup)(memberUid=%s))(&(objectClass=group)(member=%s)))
对于 SASL LDAP 身份验证,自定义组搜索过滤器。
搜索过滤器值可以包含表示用户名和完整用户 DN 的符号
{UA}
。{UD}
例如,{UA}
替换为用户名,例如"admin"
,而{UD}
替换为使用完整的 DN,例如"uid=admin,ou=People,dc=example,dc=com"
. 以下值为默认值,它同时支持 OpenLDAP 和 Active Directory:(|(&(objectClass=posixGroup)(memberUid={UA})) (&(objectClass=group)(member={UD})))
在某些情况下,对于用户场景,
memberOf
是一个不包含任何组信息的简单用户属性。为了获得额外的灵活性,可选的{GA}
前缀可以与组搜索属性一起使用。任何带有 {GA} 前缀的组属性都被视为具有组名的用户属性。例如,对于值为{GA}MemberOf
,如果组值为 DN,则组 DN 中的第一个属性值将作为组名返回。authentication_ldap_sasl_init_pool_size
命令行格式 --authentication-ldap-sasl-init-pool-size=#
系统变量 authentication_ldap_sasl_init_pool_size
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 10
最小值 0
最大值 32767
单元 连接 对于 SASL LDAP 身份验证,LDAP 服务器连接池的初始大小。根据对 LDAP 服务器的并发身份验证请求的平均数量选择此变量的值。
该插件使用
authentication_ldap_sasl_init_pool_size
和authentication_ldap_sasl_max_pool_size
一起进行连接池管理:当身份验证插件初始化时,它会创建
authentication_ldap_sasl_init_pool_size
连接,除非authentication_ldap_sasl_max_pool_size=0
禁用池。如果插件在当前连接池中没有空闲连接时收到身份验证请求,则插件可以创建一个新连接,最大连接池大小为
authentication_ldap_sasl_max_pool_size
.如果插件在池大小已经达到最大值并且没有空闲连接时收到请求,则身份验证失败。
当插件卸载时,它会关闭所有池连接。
对插件系统变量设置的更改可能对池中已有的连接没有影响。例如,修改 LDAP 服务器主机、端口或 TLS 设置不会影响现有连接。但是,如果原始变量值无效并且无法初始化连接池,插件会尝试为下一个 LDAP 请求重新初始化池。在这种情况下,新的系统变量值用于重新初始化尝试。
如果
authentication_ldap_sasl_max_pool_size=0
要禁用池,插件打开的每个 LDAP 连接都使用系统变量当时的值。authentication_ldap_sasl_log_status
命令行格式 --authentication-ldap-sasl-log-status=#
系统变量 authentication_ldap_sasl_log_status
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 1
最小值 1
最大值 (≥ 8.0.18) 6
最大值(≤ 8.0.17) 5
对于 SASL LDAP 身份验证,写入错误日志的消息的日志记录级别。下表显示了允许的级别值及其含义。
表 6.30 authentication_ldap_sasl_log_status 的日志级别
期权价值 记录的消息类型 1
没有消息 2
错误信息 3
错误和警告信息 4
错误、警告和信息消息 5
与上一级别相同,加上来自 MySQL 的调试消息 6
与上一级相同,加上来自 LDAP 库的调试消息 从 MySQL 8.0.18 开始,日志级别 6 可用。
在客户端,可以通过设置
AUTHENTICATION_LDAP_CLIENT_LOG
环境变量将消息记录到标准输出。允许值和默认值与 相同authentication_ldap_sasl_log_status
。AUTHENTICATION_LDAP_CLIENT_LOG
环境变量仅适用于 SASL LDAP 身份验证 。它对简单的 LDAP 身份验证没有影响,因为在这种情况下,客户端插件是mysql_clear_password
,它对 LDAP 操作一无所知。authentication_ldap_sasl_max_pool_size
命令行格式 --authentication-ldap-sasl-max-pool-size=#
系统变量 authentication_ldap_sasl_max_pool_size
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 1000
最小值 0
最大值 32767
单元 连接 对于 SASL LDAP 身份验证,LDAP 服务器连接池的最大大小。要禁用连接池,请将此变量设置为 0。
此变量与 结合使用
authentication_ldap_sasl_init_pool_size
。请参阅该变量的说明。authentication_ldap_sasl_referral
命令行格式 --authentication-ldap-sasl-referral[={OFF|ON}]
介绍 8.0.20 系统变量 authentication_ldap_sasl_referral
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 布尔值 默认值 OFF
对于 SASL LDAP 身份验证,是否启用 LDAP 搜索引用。请参阅 LDAP 搜索推荐。
可以设置此变量以覆盖默认的 OpenLDAP 引用配置;请参阅 LDAP 可插入身份验证和 ldap.conf
authentication_ldap_sasl_server_host
命令行格式 --authentication-ldap-sasl-server-host=host_name
系统变量 authentication_ldap_sasl_server_host
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 对于 SASL LDAP 身份验证,LDAP 服务器主机。此变量的允许值取决于身份验证方法:
对于
authentication_ldap_sasl_auth_method_name=SCRAM-SHA-1
:LDAP 服务器主机可以是主机名或 IP 地址。对于
authentication_ldap_sasl_auth_method_name=SCRAM-SHA-256
:LDAP 服务器主机可以是主机名或 IP 地址。
authentication_ldap_sasl_server_port
命令行格式 --authentication-ldap-sasl-server-port=port_num
系统变量 authentication_ldap_sasl_server_port
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 389
最小值 1
最大值 32376
对于 SASL LDAP 身份验证,LDAP 服务器 TCP/IP 端口号。
从 MySQL 8.0.14 开始,如果 LDAP 端口号配置为 636 或 3269,则插件使用 LDAPS(LDAP over SSL)而不是 LDAP。(LDAPS 不同于
startTLS
。)-
命令行格式 --authentication-ldap-sasl-tls[={OFF|ON}]
系统变量 authentication_ldap_sasl_tls
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 布尔值 默认值 OFF
对于 SASL LDAP 身份验证,插件与 LDAP 服务器的连接是否安全。如果启用此变量,插件将使用 TLS 安全地连接到 LDAP 服务器。可以设置此变量以覆盖默认的 OpenLDAP TLS 配置;请参阅 LDAP 可插入身份验证和 ldap.conf如果启用此变量,您可能还希望设置该
authentication_ldap_sasl_ca_path
变量。MySQL LDAP 插件支持 StartTLS 方法,该方法在普通 LDAP 连接之上初始化 TLS。
从 MySQL 8.0.14 开始,可以通过设置
authentication_ldap_sasl_server_port
系统变量来使用 LDAPS。 authentication_ldap_sasl_user_search_attr
命令行格式 --authentication-ldap-sasl-user-search-attr=value
系统变量 authentication_ldap_sasl_user_search_attr
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 uid
对于 SASL LDAP 认证,指定 LDAP 目录条目中用户名的属性的名称。如果未提供用户可分辨名称,身份验证插件将使用此属性搜索名称。例如,如果
authentication_ldap_sasl_user_search_attr
值为uid
,则搜索用户名会user1
找到uid
值为 的条目user1
。authentication_ldap_simple_auth_method_name
命令行格式 --authentication-ldap-simple-auth-method-name=value
系统变量 authentication_ldap_simple_auth_method_name
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 SIMPLE
有效值 SIMPLE
AD-FOREST
对于简单的 LDAP 身份验证,身份验证方法名称。身份验证插件和 LDAP 服务器之间的通信根据此身份验证方法发生。
笔记对于所有简单的 LDAP 身份验证方法,建议还设置 TLS 参数以要求与 LDAP 服务器的通信通过安全连接进行。
这些身份验证方法值是允许的:
SIMPLE
:使用简单的 LDAP 身份验证。此方法使用一个或两个 LDAP 绑定操作,具体取决于 MySQL 帐户是否命名 LDAP 用户专有名称。见说明authentication_ldap_simple_bind_root_dn
。AD-FOREST
:一种变体SIMPLE
,这样身份验证会搜索 Active Directory 林中的所有域,对每个 Active Directory 域执行 LDAP 绑定,直到在某个域中找到用户。
authentication_ldap_simple_bind_base_dn
命令行格式 --authentication-ldap-simple-bind-base-dn=value
系统变量 authentication_ldap_simple_bind_base_dn
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于简单的 LDAP 身份验证,基本专有名称 (DN)。此变量可用于通过将搜索锚定在 搜索树 中的特定位置( “基” )来限制搜索范围。
假设一组 LDAP 用户条目的每个成员都具有以下形式:
uid=user_name,ou=People,dc=example,dc=com
另一组 LDAP 用户条目的每个成员都具有以下形式:
uid=user_name,ou=Admin,dc=example,dc=com
然后像这样搜索不同的基本 DN 值:
如果基本 DN 是
ou=People,dc=example,dc=com
:搜索仅在第一组中查找用户条目。如果基本 DN 是
ou=Admin,dc=example,dc=com
:搜索仅在第二组中查找用户条目。如果基本 DN 是
ou=dc=example,dc=com
:搜索查找第一组或第二组中的用户条目。
通常,更具体的基本 DN 值会导致更快的搜索,因为它们会更多地限制搜索范围。
authentication_ldap_simple_bind_root_dn
命令行格式 --authentication-ldap-simple-bind-root-dn=value
系统变量 authentication_ldap_simple_bind_root_dn
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于简单的 LDAP 身份验证,根专有名称 (DN)。此变量与 一起
authentication_ldap_simple_bind_root_pwd
用作凭据,用于向 LDAP 服务器进行身份验证以执行搜索。身份验证使用一个或两个 LDAP 绑定操作,具体取决于 MySQL 帐户是否命名 LDAP 用户 DN:如果帐户未命名用户 DN: 使用 和
authentication_ldap_simple
执行初始 LDAP 绑定 。(默认情况下它们都是空的,因此如果未设置它们,LDAP 服务器必须允许匿名连接。)生成的绑定 LDAP 句柄用于根据客户端用户名搜索用户 DN。 使用用户 DN 和客户端提供的密码执行第二次绑定。authentication_ldap_simple_bind_root_dn
authentication_ldap_simple_bind_root_pwd
authentication_ldap_simple
如果该帐户确实命名了一个用户 DN:在这种情况下,第一个绑定操作是不必要的。
authentication_ldap_simple
使用用户 DN 和客户端提供的密码执行单个绑定。这比 MySQL 帐户不指定 LDAP 用户 DN 更快。
authentication_ldap_simple_bind_root_pwd
命令行格式 --authentication-ldap-simple-bind-root-pwd=value
系统变量 authentication_ldap_simple_bind_root_pwd
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于简单的 LDAP 身份验证,root 专有名称的密码。此变量与 结合使用
authentication_ldap_simple_bind_root_dn
。请参阅该变量的说明。authentication_ldap_simple_ca_path
命令行格式 --authentication-ldap-simple-ca-path=value
系统变量 authentication_ldap_simple_ca_path
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 NULL
对于简单的 LDAP 身份验证,证书颁发机构文件的绝对路径。如果希望身份验证插件执行 LDAP 服务器证书的验证,请指定此文件。
笔记除了将
authentication_ldap_simple_ca_path
变量设置为文件名之外,您还必须将适当的证书颁发机构证书添加到文件并启用authentication_ldap_simple_tls
系统变量。可以设置这些变量来覆盖默认的 OpenLDAP TLS 配置;请参阅 LDAP 可插入身份验证和 ldap.confauthentication_ldap_simple_group_search_attr
命令行格式 --authentication-ldap-simple-group-search-attr=value
系统变量 authentication_ldap_simple_group_search_attr
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 cn
对于简单 LDAP 认证,指定 LDAP 目录条目中的组名的属性名称。如果
authentication_ldap_simple_group_search_attr
其默认值为cn
,搜索将返回该cn
值作为组名称。例如,如果uid
值为的 LDAP 条目user1
的cn
属性为mygroup
,则搜索user1
returnmygroup
作为组名。如果组搜索属性为
isMemberOf
,LDAP 认证直接检索用户属性isMemberOf
值并将其分配为组信息。如果组搜索属性不是isMemberOf
,则 LDAP 身份验证会搜索用户所属的所有组。(后者是默认行为。)此行为基于如何以两种方式存储 LDAP 组信息:1) 组条目可以具有名为 用户名memberUid
或member
值为用户名的属性;2) 用户条目可以有一个属性,该属性以isMemberOf
组名的值命名。authentication_ldap_simple_group_search_filter
命令行格式 --authentication-ldap-simple-group-search-filter=value
系统变量 authentication_ldap_simple_group_search_filter
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 (|(&(objectClass=posixGroup)(memberUid=%s))(&(objectClass=group)(member=%s)))
对于简单的 LDAP 身份验证,自定义组搜索过滤器。
搜索过滤器值可以包含表示用户名和完整用户 DN 的符号
{UA}
。{UD}
例如,{UA}
替换为用户名,例如"admin"
,而{UD}
替换为使用完整的 DN,例如"uid=admin,ou=People,dc=example,dc=com"
. 以下值为默认值,它同时支持 OpenLDAP 和 Active Directory:(|(&(objectClass=posixGroup)(memberUid={UA})) (&(objectClass=group)(member={UD})))
在某些情况下,对于用户场景,
memberOf
是一个不包含任何组信息的简单用户属性。为了获得额外的灵活性,可选的{GA}
前缀可以与组搜索属性一起使用。任何带有 {GA} 前缀的组属性都被视为具有组名的用户属性。例如,对于值为{GA}MemberOf
,如果组值为 DN,则组 DN 中的第一个属性值将作为组名返回。authentication_ldap_simple_init_pool_size
命令行格式 --authentication-ldap-simple-init-pool-size=#
系统变量 authentication_ldap_simple_init_pool_size
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 10
最小值 0
最大值 32767
单元 连接 对于简单的 LDAP 身份验证,LDAP 服务器连接池的初始大小。根据对 LDAP 服务器的并发身份验证请求的平均数量选择此变量的值。
该插件使用
authentication_ldap_simple_init_pool_size
和authentication_ldap_simple_max_pool_size
一起进行连接池管理:当身份验证插件初始化时,它会创建
authentication_ldap_simple_init_pool_size
连接,除非authentication_ldap_simple_max_pool_size=0
禁用池。如果插件在当前连接池中没有空闲连接时收到身份验证请求,则插件可以创建一个新连接,最大连接池大小为
authentication_ldap_simple_max_pool_size
.如果插件在池大小已经达到最大值并且没有空闲连接时收到请求,则身份验证失败。
当插件卸载时,它会关闭所有池连接。
对插件系统变量设置的更改可能对池中已有的连接没有影响。例如,修改 LDAP 服务器主机、端口或 TLS 设置不会影响现有连接。但是,如果原始变量值无效并且无法初始化连接池,插件会尝试为下一个 LDAP 请求重新初始化池。在这种情况下,新的系统变量值用于重新初始化尝试。
如果
authentication_ldap_simple_max_pool_size=0
要禁用池,插件打开的每个 LDAP 连接都使用系统变量当时的值。authentication_ldap_simple_log_status
命令行格式 --authentication-ldap-simple-log-status=#
系统变量 authentication_ldap_simple_log_status
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 1
最小值 1
最大值 (≥ 8.0.18) 6
最大值(≤ 8.0.17) 5
对于简单的 LDAP 身份验证,写入错误日志的消息的日志记录级别。下表显示了允许的级别值及其含义。
表 6.31 authentication_ldap_simple_log_status 的日志级别
期权价值 记录的消息类型 1
没有消息 2
错误信息 3
错误和警告信息 4
错误、警告和信息消息 5
与上一级别相同,加上来自 MySQL 的调试消息 6
与上一级相同,加上来自 LDAP 库的调试消息 从 MySQL 8.0.18 开始,日志级别 6 可用。
authentication_ldap_simple_max_pool_size
命令行格式 --authentication-ldap-simple-max-pool-size=#
系统变量 authentication_ldap_simple_max_pool_size
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 1000
最小值 0
最大值 32767
单元 连接 对于简单 LDAP 身份验证,LDAP 服务器连接池的最大大小。要禁用连接池,请将此变量设置为 0。
此变量与 结合使用
authentication_ldap_simple_init_pool_size
。请参阅该变量的说明。authentication_ldap_simple_referral
命令行格式 --authentication-ldap-simple-referral[={OFF|ON}]
介绍 8.0.20 系统变量 authentication_ldap_simple_referral
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 布尔值 默认值 OFF
对于简单的 LDAP 身份验证,是否启用 LDAP 搜索引用。请参阅 LDAP 搜索推荐。
authentication_ldap_simple_server_host
命令行格式 --authentication-ldap-simple-server-host=host_name
系统变量 authentication_ldap_simple_server_host
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 对于简单的 LDAP 身份验证,LDAP 服务器主机。此变量的允许值取决于身份验证方法:
对于
authentication_ldap_simple_auth_method_name=SIMPLE
:LDAP 服务器主机可以是主机名或 IP 地址。对于
authentication_ldap_simple_auth_method_name=AD-FOREST
。LDAP 服务器主机可以是 Active Directory 域名。例如,对于 的 LDAP 服务器 URLldap://example.mem.local:389
,域名可以是mem.local
。Active Directory 林设置可以有多个域(LDAP 服务器 IP),可以使用 DNS 发现这些域。在 Unix 和类 Unix 系统上,可能需要一些额外的设置来使用 SRV 记录配置您的 DNS 服务器,这些记录为 Active Directory 域指定 LDAP 服务器。有关 DNS SRV 的信息,请参阅 RFC 2782。
假设您的配置具有以下属性:
提供有关 Active Directory 域信息的名称服务器具有 IP 地址
10.172.166.100
。LDAP 服务器的名称 和 IP 地址 都
ldap1.mem.local
通过 。ldap3.mem.local
10.172.166.101
10.172.166.103
您希望使用 SRV 搜索可以发现 LDAP 服务器。例如,在命令行中,像这样的命令应该列出 LDAP 服务器:
host -t SRV _ldap._tcp.mem.local
执行DNS配置如下:
添加一行以
/etc/resolv.conf
指定提供有关 Active Directory 域的信息的名称服务器:nameserver 10.172.166.100
使用 LDAP 服务器的 SRV 记录为名称服务器配置适当的区域文件:
_ldap._tcp.mem.local. 86400 IN SRV 0 100 389 ldap1.mem.local. _ldap._tcp.mem.local. 86400 IN SRV 0 100 389 ldap2.mem.local. _ldap._tcp.mem.local. 86400 IN SRV 0 100 389 ldap3.mem.local.
/etc/hosts
如果无法解析服务器主机 ,可能还需要指定 LDAP 服务器的 IP 地址 。例如,将这样的行添加到文件中:10.172.166.101 ldap1.mem.local 10.172.166.102 ldap2.mem.local 10.172.166.103 ldap3.mem.local
使用刚刚描述的 DNS 配置,服务器端 LDAP 插件可以发现 LDAP 服务器并尝试在所有域中进行身份验证,直到身份验证成功或没有更多服务器为止。
Windows 不需要刚才描述的设置。给定值中的 LDAP 服务器主机
authentication_ldap_simple_server_host
,Windows LDAP 库将搜索所有域并尝试进行身份验证。
authentication_ldap_simple_server_port
命令行格式 --authentication-ldap-simple-server-port=port_num
系统变量 authentication_ldap_simple_server_port
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 整数 默认值 389
最小值 1
最大值 32376
对于简单 LDAP 身份验证,LDAP 服务器 TCP/IP 端口号。
从 MySQL 8.0.14 开始,如果 LDAP 端口号配置为 636 或 3269,则插件使用 LDAPS(LDAP over SSL)而不是 LDAP。(LDAPS 不同于
startTLS
。)authentication_ldap_simple_tls
命令行格式 --authentication-ldap-simple-tls[={OFF|ON}]
系统变量 authentication_ldap_simple_tls
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 布尔值 默认值 OFF
对于简单的 LDAP 身份验证,插件与 LDAP 服务器的连接是否安全。如果启用此变量,插件将使用 TLS 安全地连接到 LDAP 服务器。可以设置此变量以覆盖默认的 OpenLDAP TLS 配置;请参阅 LDAP 可插入身份验证和 ldap.conf如果启用此变量,您可能还希望设置该
authentication_ldap_simple_ca_path
变量。MySQL LDAP 插件支持 StartTLS 方法,该方法在普通 LDAP 连接之上初始化 TLS。
从 MySQL 8.0.14 开始,可以通过设置
authentication_ldap_simple_server_port
系统变量来使用 LDAPS。authentication_ldap_simple_user_search_attr
命令行格式 --authentication-ldap-simple-user-search-attr=value
系统变量 authentication_ldap_simple_user_search_attr
范围 全球的 动态的 是的 SET_VAR
提示适用不 类型 细绳 默认值 uid
对于简单 LDAP 认证,指定 LDAP 目录条目中用户名的属性名称。如果未提供用户可分辨名称,身份验证插件将使用此属性搜索名称。例如,如果
authentication_ldap_simple_user_search_attr
值为uid
,则搜索用户名会user1
找到uid
值为 的条目user1
。