除非安装了相应的服务器端插件,否则这些变量不可用
authentication_ldap_sasl
用于名称格式为authentication_ldap_sasl_
的系统变量xxx
authentication_ldap_simple
用于名称格式为authentication_ldap_simple_
的系统变量xxx
表 8.28 身份验证插件系统变量摘要
authentication_kerberos_service_key_tab
命令行格式 --authentication-kerberos-service-key-tab=file_name
系统变量 authentication_kerberos_service_key_tab
范围 全局 动态 否 SET_VAR
提示适用否 类型 文件名 默认值 datadir/mysql.keytab
包含用于验证从客户端接收的 MySQL 服务票证的 Kerberos 服务密钥的服务器端密钥表 (“keytab”) 文件的名称。文件名应指定为绝对路径名。如果未设置此变量,则默认值为数据目录中的
mysql.keytab
。该文件必须存在且包含服务主体名称 (SPN) 的有效密钥,否则将无法验证客户端。 (SPN 和相同的密钥也必须在 Kerberos 服务器中创建。)该文件可能包含多个服务主体名称及其各自的密钥组合。
该文件必须由 Kerberos 服务器管理员生成,并复制到 MySQL 服务器可以访问的位置。可以使用以下命令验证该文件以确保其正确且已正确复制
klist -k file_name
有关 keytab 文件的信息,请参阅 https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html.
authentication_kerberos_service_principal
命令行格式 --authentication-kerberos-service-principal=name
系统变量 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/[email protected]
。服务主体名称和服务密钥必须已存在于 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
有效值 SCRAM-SHA-1
SCRAM-SHA-256
GSSAPI
对于 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
,但更安全。它需要使用 Cyrus SASL 2.1.27 或更高版本构建的 OpenLDAP 服务器。GSSAPI
:使用 Kerberos,一种无密码且基于票证的协议。GSSAPI/Kerberos 仅在 Linux 上作为 MySQL 客户端和服务器的身份验证方法受支持。它在 Linux 环境中非常有用,在这些环境中,应用程序使用 Microsoft Active Directory 访问 LDAP,默认情况下启用了 Kerberos。
客户端
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)。此变量可用于通过将搜索锚定在搜索树中的某个位置(“base”)来限制搜索范围。
假设一组 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
使用authentication_ldap_sasl_bind_root_dn
和authentication_ldap_sasl_bind_root_pwd
执行初始 LDAP 绑定。(默认情况下,这两个值都为空,因此如果没有设置它们,LDAP 服务器必须允许匿名连接。)生成的绑定 LDAP 句柄用于根据客户端用户名搜索用户 DN。authentication_ldap_sasl
使用用户 DN 和客户端提供的密码执行第二个绑定。如果帐户确实指定了用户 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 身份验证,根可辨别名称的密码。此变量与
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_connect_timeout
命令行格式 --authentication-ldap-sasl-connect-timeout=#
系统变量 authentication_ldap_sasl_connect_timeout
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 30
最小值 0
最大值 31536000
单位 秒 指定 MySQL 服务器使用 TCP 连接到 LDAP 服务器等待的时间(以秒为单位)。
当 MySQL 帐户使用 LDAP 进行身份验证时,MySQL 服务器尝试与 LDAP 服务器建立 TCP 连接,它使用该连接通过连接发送 LDAP 绑定请求。如果 LDAP 服务器在配置的时间量后没有响应 TCP 握手,MySQL 会放弃 TCP 握手尝试并发出错误消息。如果超时设置值为零,MySQL 服务器会忽略此系统变量设置。有关更多信息,请参阅 为 LDAP 可插拔身份验证设置超时。
注意如果将此变量设置为大于主机系统默认值的超时值,则使用较短的系统超时。
authentication_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
值为user1
的 LDAP 条目具有cn
属性mygroup
,则对user1
的搜索将返回mygroup
作为组名称。如果希望没有组或代理身份验证,则此变量应为空字符串。
如果组搜索属性为
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 身份验证,自定义组搜索过滤器。
搜索过滤器值可以包含
{UA}
和{UD}
符号来表示用户名和完整用户 DN。例如,{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
最大值 6
对于 SASL LDAP 身份验证,写入错误日志的消息的日志级别。下表显示了允许的级别值及其含义。
表 8.29 authentication_ldap_sasl_log_status 的日志级别
选项值 记录的消息类型 1
无消息 2
错误消息 3
错误和警告消息 4
错误、警告和信息消息 5
与上一级相同,另外还有来自 MySQL 的调试消息 6
与上一级相同,另外还有来自 LDAP 库的调试消息 在客户端,可以通过设置
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}]
系统变量 authentication_ldap_sasl_referral
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
对于 SASL LDAP 身份验证,是否启用 LDAP 搜索引用。请参阅 LDAP 搜索引用。
此变量可以设置为覆盖默认的 OpenLDAP 引用配置;请参阅 LDAP 可插拔身份验证和 ldap.conf
authentication_ldap_sasl_response_timeout
命令行格式 --authentication-ldap-sasl-response-timeout=#
系统变量 authentication_ldap_sasl_response_timeout
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 30
最小值 0
最大值 31536000
单位 秒 指定 MySQL 服务器等待 LDAP 服务器响应 LDAP 绑定请求的时间(以秒为单位)。
当 MySQL 帐户使用 LDAP 进行身份验证时,MySQL 服务器会向 LDAP 服务器发送 LDAP 绑定请求。如果 LDAP 服务器在配置的时间量后没有响应请求,则 MySQL 会放弃请求并发出错误消息。如果超时设置为零,则 MySQL 服务器会忽略此系统变量设置。有关详细信息,请参阅 为 LDAP 可插拔身份验证设置超时。
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 端口号。
如果 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。
LDAPS 可以通过设置
authentication_ldap_sasl_server_port
系统变量来使用。 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
使用authentication_ldap_simple_bind_root_dn
和authentication_ldap_simple_bind_root_pwd
执行初始 LDAP 绑定。(默认情况下,这两个值都为空,因此如果未设置,则 LDAP 服务器必须允许匿名连接。)生成的绑定 LDAP 句柄用于根据客户端用户名搜索用户 DN。authentication_ldap_simple
使用用户 DN 和客户端提供的密码执行第二个绑定。如果帐户确实命名了用户 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 身份验证,根区分名称的密码。此变量与
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_connect_timeout
命令行格式 --authentication-ldap-simple-connect-timeout=#
系统变量 authentication_ldap_simple_connect_timeout
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 30
最小值 0
最大值 31536000
单位 秒 指定 MySQL 服务器使用 TCP 连接到 LDAP 服务器等待的时间(以秒为单位)。
当 MySQL 帐户使用 LDAP 进行身份验证时,MySQL 服务器尝试与 LDAP 服务器建立 TCP 连接,它使用该连接通过连接发送 LDAP 绑定请求。如果 LDAP 服务器在配置的时间量后没有响应 TCP 握手,MySQL 会放弃 TCP 握手尝试并发出错误消息。如果超时设置值为零,MySQL 服务器会忽略此系统变量设置。有关更多信息,请参阅 为 LDAP 可插拔身份验证设置超时。
注意如果将此变量设置为大于主机系统默认值的超时值,则使用较短的系统超时。
authentication_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
值为user1
的 LDAP 条目具有cn
属性为mygroup
,则对user1
的搜索将返回mygroup
作为组名。如果组搜索属性为
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 身份验证,自定义组搜索过滤器。
搜索过滤器值可以包含
{UA}
和{UD}
符号来表示用户名和完整用户 DN。例如,{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
最大值 6
对于简单的 LDAP 身份验证,写入错误日志的消息的日志级别。下表显示了允许的级别值及其含义。
表 8.30 authentication_ldap_simple_log_status 的日志级别
选项值 记录的消息类型 1
无消息 2
错误消息 3
错误和警告消息 4
错误、警告和信息消息 5
与上一级相同,另外还有来自 MySQL 的调试消息 6
与上一级相同,另外还有来自 LDAP 库的调试消息 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}]
系统变量 authentication_ldap_simple_referral
范围 全局 动态 是 SET_VAR
提示适用否 类型 布尔值 默认值 OFF
对于简单的 LDAP 身份验证,是否启用 LDAP 搜索转介。请参阅 LDAP 搜索转介.
authentication_ldap_simple_response_timeout
命令行格式 --authentication-ldap-simple-response-timeout=#
系统变量 authentication_ldap_simple_response_timeout
范围 全局 动态 是 SET_VAR
提示适用否 类型 整数 默认值 30
最小值 0
最大值 31536000
单位 秒 指定 MySQL 服务器等待 LDAP 服务器响应 LDAP 绑定请求的时间(以秒为单位)。
当 MySQL 帐户使用 LDAP 进行身份验证时,MySQL 服务器会向 LDAP 服务器发送 LDAP 绑定请求。如果 LDAP 服务器在配置的时间量后没有响应请求,则 MySQL 会放弃请求并发出错误消息。如果超时设置为零,则 MySQL 服务器会忽略此系统变量设置。有关详细信息,请参阅 为 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 系统上,可能需要进行一些额外的设置才能使用指定 Active Directory 域的 LDAP 服务器的 SRV 记录配置您的 DNS 服务器。有关 DNS SRV 的信息,请参阅 RFC 2782.
假设您的配置具有以下属性
提供有关 Active Directory 域的信息的名称服务器的 IP 地址为
10.172.166.100
。LDAP 服务器的名称为
ldap1.mem.local
到ldap3.mem.local
,IP 地址为10.172.166.101
到10.172.166.103
。
您希望 LDAP 服务器可通过 SRV 搜索发现。例如,在命令行中,类似以下的命令应该列出 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 不需要如上所述的设置。在
authentication_ldap_simple_server_host
值中给出 LDAP 服务器主机后,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 端口号。
如果 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 Pluggable 身份验证和 ldap.conf 如果您启用此变量,您可能还想设置
authentication_ldap_simple_ca_path
变量。MySQL LDAP 插件支持 StartTLS 方法,该方法在普通 LDAP 连接之上初始化 TLS。
LDAPS 可以通过设置
authentication_ldap_simple_server_port
系统变量来使用。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
的条目。-
命令行格式 --authentication-webauthn-rp-id=value
系统变量 authentication_webauthn_rp_id
范围 全局 动态 是 SET_VAR
提示适用否 类型 字符串 此变量指定用于服务器端插件安装、设备注册和 WebAuthn 身份验证的依赖方 ID。如果尝试进行 WebAuthn 身份验证且此值与设备期望的值不符,则设备会认为它没有与正确的服务器通信,并且会发生错误。最大值长度为 255 个字符。