这些变量只有在安装了适当的服务器端插件时才可用:
-
authentication_ldap_saslfor system variables with names of the formauthentication_ldap_sasl_xxx -
authentication_ldap_simplefor system variables with names of the formauthentication_ldap_simple_xxx
表 8.31 身份验证插件系统变量摘要
-
Command-Line Format --authentication-fido-rp-id=valueDeprecated 是 System Variable 身份验证 FIDO RP IDScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value MySQL该变量指定了用于 FIDO 设备注册和 FIDO 身份验证的依赖方 ID。如果 FIDO 身份验证尝试并且该值不是 FIDO 设备所期望的值,则设备假设它不是与正确的服务器通信,并出现错误。最大值长度为 255 个字符。
Note该插件变量已弃用,并将在未来 MySQL 版本中删除。它被
身份验证 WebAuthn RP ID变量所取代,该变量支持 WebAuthn 身份验证。有关信息,请参阅 第 8.4.1.11 节,“WebAuthn 可插拔身份验证”。 -
Command-Line Format --authentication-kerberos-service-key-tab=file_nameSystem Variable 身份验证 Kerberos 服务密钥表Scope 全局 Dynamic 否 SET_VARHint Applies否 Type 文件名 Default Value 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。
-
Command-Line Format --authentication-kerberos-service-principal=nameSystem Variable 身份验证 Kerberos 服务主体Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value mysql/host_name@realm_nameMySQL 服务器发送给客户端的 Kerberos 服务主体名称(SPN)。
该值由服务名称(
mysql)、主机名称和领域名称组成。默认值为mysql/。领域在服务主体名称中启用了 exact 服务密钥的检索。host_name@realm_name要使用非默认值,请使用相同的格式设置值。例如,要使用主机名称
krbauth.example.com和领域MYSQL.LOCAL,请将身份验证 Kerberos 服务主体设置为mysql/krbauth.example.com@MYSQL.LOCAL。服务主体名称和服务密钥必须已经存在于 KDC 服务器管理的数据库中。
可以有服务主体名称仅通过领域名称不同。
-
Command-Line Format --authentication-ldap-sasl-auth-method-name=valueSystem Variable LDAP SASL 认证方法名称Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value SCRAM-SHA-1Valid Values 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 环境中应用程序访问 LDAP 使用 Microsoft Active Directory,默认情况下启用 Kerberos。
客户端
authentication_ldap_sasl_client插件使用 Kerberos 获取服务票据,然后将其传递给服务器端authentication_ldap_sasl插件。服务器端插件然后与 LDAP 服务器通信,以解释 LDAP 认证消息并检索 LDAP 组。
-
-
Command-Line Format --authentication-ldap-sasl-bind-base-dn=valueSystem Variable LDAP SASL 绑定基本 DNScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL对于 SASL LDAP 认证,基本 DN(distinguished name)。该变量可以用来限制搜索范围,通过将其锚定在搜索树中的某个位置(“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 值将导致搜索速度更快,因为它们限制了搜索范围。
-
-
Command-Line Format --authentication-ldap-sasl-bind-root-dn=valueSystem Variable LDAP SASL 绑定根 DNScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL对于 SASL LDAP 认证,根 DN(distinguished name)。该变量与
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_pwdCommand-Line Format --authentication-ldap-sasl-bind-root-pwd=值System Variable authentication_ldap_sasl_bind_root_pwdScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL对于SASL LDAP身份验证,根DN的密码。此变量与
authentication_ldap_sasl_bind_root_dn一起使用。请参阅该变量的描述。 -
authentication_ldap_sasl_ca_pathCommand-Line Format --authentication-ldap-sasl-ca-path=值System Variable authentication_ldap_sasl_ca_pathScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL对于SASL LDAP身份验证,证书颁发机构文件的绝对路径。指定此文件,以便身份验证插件执行LDAP服务器证书的验证。
Note除了设置
authentication_ldap_sasl_ca_path变量为文件名外,还需要将适当的证书颁发机构证书添加到文件中,并启用authentication_ldap_sasl_tls系统变量。这些变量可以设置以覆盖默认的OpenLDAP TLS配置;请参阅LDAP Pluggable Authentication and ldap.conf -
authentication_ldap_sasl_connect_timeoutCommand-Line Format --authentication-ldap-sasl-connect-timeout=#System Variable authentication_ldap_sasl_connect_timeoutScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 30Minimum Value 0Maximum Value 31536000Unit 秒 指定MySQL服务器等待连接到LDAP服务器的时间(以秒为单位).
当MySQL账户使用LDAP身份验证时,MySQL服务器尝试建立与LDAP服务器的TCP连接,以便发送LDAP绑定请求。 如果LDAP服务器在配置的时间内没有响应TCP握手,MySQL服务器将放弃TCP握手尝试并发出错误消息。如果超时设置为零,MySQL服务器将忽略该系统变量设置。有关更多信息,请参阅Setting Timeouts for LDAP Pluggable Authentication.
Note如果您将此变量设置为大于主机系统默认值的超时值,则使用较短的系统超时。
-
Command-Line Format --authentication-ldap-sasl-group-search-attr=值System Variable LDAP SASL 组搜索属性Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value cn对于 SASL LDAP 身份验证,指定 LDAP 目录条目中组名称的属性名称。如果
LDAP SASL 组搜索属性的默认值为cn,则搜索将返回cn值作为组名称。例如,如果 LDAP 条目具有uid值user1,并且具有cn属性mygroup,则搜索user1将返回mygroup作为组名称。如果您不想进行组或代理身份验证,请将此变量设置为空字符串。
如果组搜索属性为
isMemberOf,LDAP 身份验证将直接检索用户属性isMemberOf值并将其分配为组信息。如果组搜索属性不是isMemberOf,LDAP 身份验证将搜索所有组,其中用户是成员。(后者是默认行为。)这基于 LDAP 组信息可以以两种方式存储:1)组条目可以具有名为memberUid或member的属性,值为用户名;2)用户条目可以具有名为isMemberOf的属性,值为组名称。 -
Command-Line Format --authentication-ldap-sasl-group-search-filter=值System Variable LDAP SASL 组搜索过滤器Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value (|(&(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 中返回第一个属性值作为组名称。 -
Command-Line Format --authentication-ldap-sasl-init-pool-size=#System Variable LDAP SASL 初始化池大小Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 10Minimum Value 0Maximum Value 32767Unit 连接 对于 SASL LDAP 身份验证,LDAP 服务器的初始连接池大小。根据 LDAP 服务器的平均并发身份验证请求数选择此变量的值。
插件使用
LDAP SASL 初始化池大小和LDAP SASL 最大池大小共同管理连接池:-
当身份验证插件初始化时,它创建
authentication_ldap_sasl_init_pool_size连接,除非authentication_ldap_sasl_max_pool_size=0禁用池。 -
如果插件在当前连接池中没有免费连接时收到身份验证请求,插件可以创建新连接,直到最大连接池大小由
authentication_ldap_sasl_max_pool_size给定。 -
如果插件在池大小已经达到最大值且没有免费连接时收到请求,身份验证失败。
-
当插件卸载时,它关闭所有池连接。
插件系统变量设置的更改可能对池中的连接没有影响。例如,修改 LDAP 服务器主机、端口或 TLS 设置不会影响现有连接。但是,如果原始变量值无效且连接池无法初始化,插件将尝试使用新系统变量值重新初始化池。
如果
authentication_ldap_sasl_max_pool_size=0禁用池,每个 LDAP 连接由插件打开时使用当前系统变量值。 -
-
authentication_ldap_sasl_log_statusCommand-Line Format --authentication-ldap-sasl-log-status=#System Variable authentication_ldap_sasl_log_statusScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1Minimum Value 1Maximum Value 6对于 SASL LDAP 身份验证,错误日志中的日志级别。下表显示了允许的级别值及其含义。
表 8.32 authentication_ldap_sasl_log_status 的日志级别
Option Value Types of Messages Logged 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_sizeCommand-Line Format --authentication-ldap-sasl-max-pool-size=#System Variable authentication_ldap_sasl_max_pool_sizeScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1000Minimum Value 0Maximum Value 32767Unit 连接 对于 SASL LDAP 身份验证,LDAP 服务器的最大连接池大小。要禁用连接池,请将此变量设置为 0。
此变量与
authentication_ldap_sasl_init_pool_size一起使用。请参阅该变量的描述。 -
authentication_ldap_sasl_referralCommand-Line Format --身份验证LDAP SASL引用[={OFF|ON}]System Variable 身份验证_ldap_sasl_referralScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔值 Default Value OFF对于SASL LDAP身份验证,是否启用LDAP搜索引用。请参阅LDAP搜索引用。
此变量可以设置以覆盖默认的OpenLDAP引用配置;请参阅LDAP可插拔身份验证和ldap.conf
-
身份验证_ldap_sasl_response_timeoutCommand-Line Format --身份验证-ldap-sasl-response-timeout=#System Variable 身份验证_ldap_sasl_response_timeoutScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 30Minimum Value 0Maximum Value 31536000Unit 秒 指定MySQL服务器等待LDAP服务器响应LDAP绑定请求的时间(以秒为单位)。
当MySQL帐户使用LDAP身份验证时,MySQL服务器将发送LDAP绑定请求到LDAP服务器。如果LDAP服务器在配置的时间内没有响应请求,MySQL服务器将放弃请求并发出错误消息。如果超时设置为零,MySQL服务器将忽略该系统变量设置。有关更多信息,请参阅设置LDAP可插拔身份验证超时。
-
Command-Line Format --身份验证-ldap-sasl-server-host=主机名System Variable 身份验证_ldap_sasl_server_hostScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 对于SASL LDAP身份验证,LDAP服务器主机。该变量的允许值取决于身份验证方法:
-
对于
身份验证_ldap_sasl_auth_method_name=SCRAM-SHA-1:LDAP服务器主机可以是主机名或IP地址。 -
对于
身份验证_ldap_sasl_auth_method_name=SCRAM-SHA-256:LDAP服务器主机可以是主机名或IP地址。
-
-
Command-Line Format --身份验证-ldap-sasl-server-port=端口号System Variable 身份验证_ldap_sasl_server_portScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 389Minimum Value 1Maximum Value 32376对于SASL LDAP身份验证,LDAP服务器的TCP/IP端口号。
如果LDAP端口号配置为636或3269,插件将使用LDAPS(LDAP over SSL)而不是LDAP。(LDAPS不同于
startTLS。) -
Command-Line Format --身份验证-ldap-sasl-tls[={OFF|ON}]System Variable 身份验证_ldap_sasl_tlsScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔值 Default Value OFF对于SASL LDAP身份验证,插件是否连接到LDAP服务器的连接是否安全。如果启用了这个变量,插件将使用TLS安全连接到LDAP服务器。此变量可以用来覆盖OpenLDAP TLS配置的默认值;见LDAP可插拔身份验证和ldap.conf如果您启用了这个变量,也可能需要设置
authentication_ldap_sasl_ca_path变量。MySQL LDAP插件支持StartTLS方法,该方法在普通LDAP连接上初始化TLS。
可以通过设置
authentication_ldap_sasl_server_port系统变量来使用LDAPS。 -
authentication_ldap_sasl_user_search_attrCommand-Line Format --authentication-ldap-sasl-user-search-attr=valueSystem Variable authentication_ldap_sasl_user_search_attrScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value uid对于SASL LDAP身份验证,LDAP目录条目中指定用户名的属性名称。如果未提供用户的区分名称,身份验证插件将使用该属性搜索用户名。例如,如果
authentication_ldap_sasl_user_search_attr值为uid,那么搜索用户名user1将找到uid值为user1的条目。 -
authentication_ldap_simple_auth_method_nameCommand-Line Format --authentication-ldap-simple-auth-method-name=valueSystem Variable authentication_ldap_simple_auth_method_nameScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value SIMPLEValid Values SIMPLEAD-FOREST对于简单LDAP身份验证,身份验证方法名称。身份验证插件和LDAP服务器之间的通信根据该身份验证方法进行。
Note对于所有简单LDAP身份验证方法,建议也设置TLS参数,以确保与LDAP服务器的通信通过安全连接进行。
允许的身份验证方法值有:
-
SIMPLE:使用简单LDAP身份验证。此方法使用一个或两个LDAP绑定操作,具体取决于MySQL帐户名称是否指定LDAP用户的区分名称。见authentication_ldap_simple_bind_root_dn的描述。 -
AD-FOREST:SIMPLE的变体,即在Active Directory森林中搜索所有域,执行LDAP绑定到每个Active Directory域,直到找到用户在某个域中。
-
-
authentication_ldap_simple_bind_base_dnCommand-Line Format --authentication-ldap-simple-bind-base-dn=valueSystem Variable authentication_ldap_simple_bind_base_dnScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value 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值会导致搜索速度更快,因为它们限制了搜索范围。
-
-
Command-Line Format --身份验证-ldap-simple-bind-root-dn=valueSystem Variable 身份验证_ldap_simple_bind_root_dnScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL对于简单LDAP身份验证,根区分名称(DN)。此变量与
身份验证_ldap_simple_bind_root_pwd一起使用,以便对LDAP服务器进行身份验证,以便执行搜索。身份验证使用一个或两个LDAP绑定操作,具体取决于MySQL帐户是否命名LDAP用户DN:-
如果帐户不命名用户DN:
身份验证_ldap_simple执行初始LDAP绑定,使用身份验证_ldap_simple_bind_root_dn和身份验证_ldap_simple_bind_root_pwd。(这些默认为空,因此如果它们未设置,LDAP服务器必须允许匿名连接。)结果绑定LDAP句柄用于搜索用户DN,基于客户端用户名。身份验证_ldap_simple执行第二个绑定,使用用户DN和客户端提供的密码。 -
如果帐户命名用户DN:在这种情况下,不需要第一次绑定操作。
身份验证_ldap_simple执行单个绑定,使用用户DN和客户端提供的密码。这比MySQL帐户不指定LDAP用户DN的情况要快。
-
-
身份验证_ldap_simple_bind_root_pwdCommand-Line Format --身份验证-ldap-simple-bind-root-pwd=valueSystem Variable 身份验证_ldap_simple_bind_root_pwdScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL对于简单LDAP身份验证,根区分名称的密码。此变量与
身份验证_ldap_simple_bind_root_dn一起使用。请参阅该变量的描述。 -
Command-Line Format --身份验证-ldap-simple-ca-path=valueSystem Variable 身份验证_ldap_simple_ca_pathScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value NULL对于简单LDAP身份验证,证书颁发机构文件的绝对路径。指定此文件,以便身份验证插件验证LDAP服务器证书。
Note除了设置
身份验证_ldap_simple_ca_path变量为文件名外,还需要将适当的证书颁发机构证书添加到文件中,并启用身份验证_ldap_simple_tls系统变量。这些变量可以设置以覆盖默认的OpenLDAP TLS配置;请参阅 LDAP Pluggable Authentication and ldap.conf -
身份验证_ldap_simple_connect_timeoutCommand-Line Format --身份验证ldap简单连接超时=#System Variable 身份验证ldap简单连接超时Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 30Minimum Value 0Maximum Value 31536000Unit 秒 指定 MySQL 服务器等待连接到 LDAP 服务器的时间(以秒为单位).
当 MySQL 帐户使用 LDAP 进行身份验证时,MySQL 服务器尝试使用 TCP 连接到 LDAP 服务器,以便发送 LDAP 绑定请求。 如果 LDAP 服务器在配置的时间内没有响应 TCP 握手,MySQL 服务器将放弃 TCP 握手尝试并发出错误消息。 如果超时设置为零,MySQL 服务器将忽略该系统变量设置。 有关更多信息,请参阅 设置 LDAP 可插拔身份验证超时.
Note如果您将该变量设置为大于主机系统默认值的超时值,则使用较短的系统超时。
-
Command-Line Format --身份验证ldap简单组搜索属性=valueSystem Variable 身份验证ldap简单组搜索属性Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value cn对于简单 LDAP 身份验证,指定组名称的属性名称在 LDAP 目录条目中。 如果 身份验证ldap简单组搜索属性 的默认值为
cn,搜索将返回cn值作为组名称。 例如,如果 LDAP 条目具有uid值为user1的cn属性为mygroup,搜索user1将返回mygroup作为组名称。如果组搜索属性为
isMemberOf,LDAP 身份验证将直接检索用户属性isMemberOf值并将其分配为组信息。 如果组搜索属性不是isMemberOf,LDAP 身份验证将搜索所有组,其中用户是成员。 (后者是默认行为。) 这种行为基于 LDAP 组信息可以以两种方式存储:1) 组条目可以具有名为memberUid或member的属性,值为用户名;2) 用户条目可以具有名为isMemberOf的属性,值为组名称。 -
Command-Line Format --身份验证ldap简单组搜索过滤器=valueSystem Variable 身份验证ldap简单组搜索过滤器Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value (|(&(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 中返回第一个属性值作为组名称。 -
Command-Line Format --authentication-ldap-simple-init-pool-size=#System Variable LDAP简单身份验证初始池大小Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 10Minimum Value 0Maximum Value 32767Unit 连接 对于简单LDAP身份验证,初始池大小的LDAP服务器连接数。根据LDAP服务器的平均并发身份验证请求次数选择该变量的值。
插件使用
LDAP简单身份验证初始池大小和LDAP简单身份验证最大池大小共同管理连接池:-
当身份验证插件初始化时,它创建
LDAP简单身份验证初始池大小连接,除非LDAP简单身份验证最大池大小=0禁用池。 -
如果插件收到身份验证请求时没有空闲连接池中的连接,该插件可以创建新的连接,直到最大连接池大小
LDAP简单身份验证最大池大小。 -
如果插件收到请求时池大小已经达到最大值且没有空闲连接,身份验证失败。
-
当插件卸载时,它关闭所有池连接。
插件系统变量设置的更改可能不会影响池中的现有连接。例如,修改LDAP服务器主机、端口或TLS设置不会影响现有连接。但是,如果原始变量值无效且连接池无法初始化,插件将尝试使用新系统变量值重新初始化池。
如果
LDAP简单身份验证最大池大小=0禁用池,每个LDAP连接由插件打开时使用当前系统变量值。 -
-
Command-Line Format --authentication-ldap-simple-log-status=#System Variable LDAP简单身份验证日志状态Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1Minimum Value 1Maximum Value 6对于简单LDAP身份验证,错误日志中的日志级别。下表显示了允许的级别值及其含义。
表 8.33 authentication_ldap_simple_log_status 的日志级别
Option Value Types of Messages Logged 1无消息 2错误消息 3错误和警告消息 4错误、警告和信息消息 5与前一个级别相同,另外还有来自MySQL的调试消息 6与前一个级别相同,另外还有来自LDAP库的调试消息 -
Command-Line Format --authentication-ldap-simple-max-pool-size=#System Variable LDAP简单身份验证最大池大小Scope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 1000Minimum Value 0Maximum Value 32767Unit 连接 对于简单LDAP身份验证,连接到LDAP服务器的池连接的最大大小。要禁用连接池,请将此变量设置为0。
此变量与
authentication_ldap_simple_init_pool_size一起使用。请参阅该变量的描述。 -
authentication_ldap_simple_referralCommand-Line Format --authentication-ldap-simple-referral[={OFF|ON}]System Variable authentication_ldap_simple_referralScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔值 Default Value OFF对于简单LDAP身份验证,是否启用LDAP搜索引用。请参阅LDAP搜索引用。
-
authentication_ldap_simple_response_timeoutCommand-Line Format --authentication-ldap-simple-response-timeout=#System Variable authentication_ldap_simple_response_timeoutScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 30Minimum Value 0Maximum Value 31536000Unit 秒 指定MySQL服务器等待LDAP服务器响应LDAP绑定请求的时间(以秒为单位)。
当MySQL帐户使用LDAP身份验证时,MySQL服务器将LDAP绑定请求发送到LDAP服务器。如果LDAP服务器在配置的时间内没有响应请求,MySQL将放弃请求并发出错误消息。如果超时设置为零,MySQL服务器将忽略该系统变量设置。有关更多信息,请参阅设置LDAP可插拔身份验证超时。
-
authentication_ldap_simple_server_hostCommand-Line Format --authentication-ldap-simple-server-host=host_nameSystem Variable authentication_ldap_simple_server_hostScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 对于简单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系统上,可能需要进行一些额外的设置以配置DNS服务器使用SRV记录指定Active Directory域的LDAP服务器。有关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中的一行,以指定提供活动目录信息的名称服务器: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_portCommand-Line Format --authentication-ldap-simple-server-port=port_numSystem Variable authentication_ldap_simple_server_portScope 全局 Dynamic 是 SET_VARHint Applies否 Type 整数 Default Value 389Minimum Value 1Maximum Value 32376对于简单 LDAP 身份验证,LDAP 服务器的 TCP/IP 端口号。
如果 LDAP 端口号配置为 636 或 3269,插件将使用 LDAPS(LDAP over SSL)而不是 LDAP。(LDAPS 与
startTLS不同。) -
authentication_ldap_simple_tlsCommand-Line Format --authentication-ldap-simple-tls[={OFF|ON}]System Variable authentication_ldap_simple_tlsScope 全局 Dynamic 是 SET_VARHint Applies否 Type 布尔值 Default Value OFF对于简单 LDAP 身份验证,插件是否使用 TLS 连接到 LDAP 服务器。如果启用此变量,插件将使用 TLS 连接到 LDAP 服务器。此变量可以覆盖默认的 OpenLDAP TLS 配置;请参阅 LDAP 可插拔身份验证和 ldap.conf 如果您启用此变量,也可能需要设置
authentication_ldap_simple_ca_path变量。MySQL LDAP 插件支持 StartTLS 方法,该方法在普通 LDAP 连接上初始化 TLS。
LDAPS 可以通过设置
authentication_ldap_simple_server_port系统变量来使用。 -
authentication_ldap_simple_user_search_attrCommand-Line Format --authentication-ldap-simple-user-search-attr=valueSystem Variable authentication_ldap_simple_user_search_attrScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 Default Value uid对于简单 LDAP 身份验证,指定用户名在 LDAP 目录条目中的属性名称。如果未提供用户的区分名称,身份验证插件将使用该属性搜索用户名。例如,如果
authentication_ldap_simple_user_search_attr值为uid,则搜索用户名user1将找到uid值为user1的条目。 -
Command-Line Format --authentication-webauthn-rp-id=valueSystem Variable authentication_webauthn_rp_idScope 全局 Dynamic 是 SET_VARHint Applies否 Type 字符串 此变量指定了用于服务器端插件安装、设备注册和 WebAuthn 身份验证的依赖方 ID。如果尝试 WebAuthn 身份验证且此值不是设备所期望的值,设备将假设它不是与正确的服务器通信,并出现错误。最大值长度为 255 个字符。