除非安装了相应的服务器端插件,否则这些变量不可用
authentication_ldap_sasl用于名称格式为authentication_ldap_sasl_的系统变量xxxauthentication_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_nameMySQL 服务器发送给客户端的 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有效值 SCRAM-SHA-1SCRAM-SHA-256GSSAPI对于 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有效值 SIMPLEAD-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 个字符。