Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Pluggable Authentication System Variables

8.4.1.13 插件式认证 System Variables

这些变量只有在安装了相应的服务器插件时才可用:

  • authentication_ldap_sasl 对于以 authentication_ldap_sasl_xxx 的形式命名的系统变量

  • authentication_ldap_simple 对于以 authentication_ldap_simple_xxx 的形式命名的系统变量

表8.29:认证插件系统变量总结

Name Cmd-Line Option File System Var Status Var Var Scope Dynamic
authentication_kerberos_service_key_tab 全局
authentication_kerberos_service_principal 全局
authentication_ldap_sasl_auth_method_name 全局
authentication_ldap_sasl_bind_base_dn 全局
authentication_ldap_sasl_bind_root_dn 全局
authentication_ldap_sasl_bind_root_pwd 全局
authentication_ldap_sasl_ca_path 全局
authentication_ldap_sasl_connect_timeout 全局
authentication_ldap_sasl_group_search_attr 全局
authentication_ldap_sasl_group_search_filter 全局
authentication_ldap_sasl_init_pool_size 全局
authentication_ldap_sasl_log_status 全局
authentication_ldap_sasl_max_pool_size 全局
authentication_ldap_sasl_referral 全局
authentication_ldap_sasl_response_timeout 全局
authentication_ldap_sasl_server_host 全局
authentication_ldap_sasl_server_port 全局
authentication_ldap_sasl_tls 全局
authentication_ldap_sasl_user_search_attr 全局
authentication_ldap_simple_auth_method_name 全局
authentication_ldap_simple_bind_base_dn 全局
authentication_ldap_simple_bind_root_dn 全局
authentication_ldap_simple_bind_root_pwd 全局
authentication_ldap_simple_ca_path 全局
authentication_ldap_simple_connect_timeout 全局
authentication_ldap_simple_group_search_attr 全局
authentication_ldap_simple_group_search_filter 全局
authentication_ldap_simple_init_pool_size 全局
authentication_ldap_simple_log_status 全局
authentication_ldap_simple_max_pool_size 全局
authentication_ldap_simple_referral 全局
authentication_ldap_simple_response_timeout 全局
authentication_ldap_simple_server_host 全局
authentication_ldap_simple_server_port 全局
authentication_ldap_simple_tls 全局
authentication_ldap_simple_user_search_attr 全局
authentication_policy 全局
authentication_webauthn_rp_id 全局
authentication_windows_log_level 全局
authentication_windows_use_principal_name 全局

  • authentication_kerberos_service_key_tab

    Command-Line Format --authentication-kerberos-service-key-tab=file_name
    System Variable authentication_kerberos_service_key_tab
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 文件名
    Default Value datadir/mysql.keytab

    MySQL 服务端密钥表(keytab)文件,包含Kerberos服务密钥,以便于客户端身份验证。文件名应为绝对路径名。如果未设置该变量,默认为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

    Command-Line Format --authentication-kerberos-service-principal=name
    System Variable 认证_kerberos_service_principal
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value mysql/主机名@realm_name

    MySQL 服务器将发送给客户端的 Kerberos 服务主体名称(SPN)。

    该值由服务名称(mysql)、主机名和realm名称组成。默认值为 mysql/主机名@realm_name。realm 在服务主体名称中启用了获取精确的服务密钥。

    要使用非默认值,请使用相同的格式。例如,要使用主机名 krbauth.example.com 和realm MYSQL.LOCAL,请将 认证_kerberos_service_principal 设置为 mysql/krbauth.example.com@MYSQL.LOCAL

    服务主体名称和服务密钥必须已经在 KDC 服务器管理的数据库中存在。

    可以有服务主体名称,它们只在realm名称上不同。

  • 认证_ldap_sasl_auth_method_name

    Command-Line Format --认证-ldap-sasl-auth-method-name=value
    System Variable 认证_ldap_sasl_auth_method_name
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value SCRAM-SHA-1
    Valid Values

    SCRAM-SHA-1

    SCRAM-SHA-256

    GSSAPI

    SASL LDAP 认证的认证方法名称。认证插件与 LDAP 服务器之间的通信根据该认证方法确保密码安全。

    这些认证方法值是允许的:

    • SCRAM-SHA-1: 使用 SASL 挑战-响应机制。

      客户端 认证_ldap_sasl_client 插件与 SASL 服务器通信,使用密码创建挑战,并获取 SASL 请求缓冲区,然后将该缓冲区传递给服务器端 认证_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 ticket-granting ticket(TGT)获取服务票据,但不直接使用LDAP服务。服务器端authentication_ldap_sasl插件将Kerberos消息路由到LDAP服务器。使用获得的凭证,服务器端插件然后与LDAP服务器通信,以解释LDAP身份验证消息并检索LDAP组。

  • authentication_ldap_sasl_bind_base_dn

    Command-Line Format --authentication-ldap-sasl-bind-base-dn=value
    System Variable authentication_ldap_sasl_bind_base_dn
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String
    Default Value NULL

    对于SASL LDAP身份验证,基础 distinguished name(DN)。这个变量可以用来限制搜索的范围,通过将搜索anchored到某个位置(“base”)中搜索树中。

    假设某些LDAP用户条目成员每个都有以下形式:

    uid=user_name,ou=People,dc=example,dc=com

    然后,搜索工作如下:

    uid=user_name,ou=Admin,dc=example,dc=com

    如果基础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

    Command-Line Format authentication_ldap_sasl_bind_root_dn
    System Variable Global
    Scope Yes
    Dynamic No
    SET_VAR Hint Applies String
    Type NULL
    Default Value 对于SASL LDAP身份验证,根 distinguished name(DN)。这个变量与authentication_ldap_sasl_bind_root_pwd一起使用,以便在LDAP服务器上进行身份验证,以便执行搜索。身份验证使用一个或两个LDAP绑定操作,取决于MySQL帐户是否命名LDAP用户DN:

    对于 SASL LDAP 身份验证,根可分辨名称 (DN)。此变量与authentication_ldap_sasl_bind_root_pwd一起用作向 LDAP 服务器验证以执行搜索的凭据。身份验证使用一个或两个 LDAP 绑定操作,具体取决于 MySQL 帐户名称是否为 LDAP 用户 DN:

    • 如果帐户不指定用户 DN:authentication_ldap_sasl 使用authentication_ldap_sasl_bind_root_dnauthentication_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

    Command-Line Format --authentication-ldap-sasl-bind-root-pwd=value
    System Variable authentication_ldap_sasl_bind_root_pwd
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    用于SASL LDAP身份验证的根 distinguished name密码。这变量与authentication_ldap_sasl_bind_root_dn一起使用。请参阅该变量的描述。

  • authentication_ldap_sasl_ca_path

    Command-Line Format --authentication-ldap-sasl-ca-path=value
    System Variable authentication_ldap_sasl_ca_path
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    用于SASL LDAP身份验证的证书_authority文件绝对路径。指定该文件,如果想要身份验证插件验证LDAP服务器证书。

    Note

    在设置authentication_ldap_sasl_ca_path变量到文件名外,还需要将适当的证书_authority证书添加到文件中,并启用authentication_ldap_sasl_tls系统变量。这些变量可以override默认的OpenLDAP TLS配置;请参阅LDAP Pluggable Authentication and ldap.conf

  • authentication_ldap_sasl_connect_timeout

    Command-Line Format --authentication-ldap-sasl-connect-timeout=#
    System Variable authentication_ldap_sasl_connect_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 30
    Minimum Value 0
    Maximum Value 31536000
    Unit

    指定 MySQL 服务器等待与 LDAP 服务器建立 TCP 连接的时间(以秒为单位)。

    当 MySQL 账户使用 LDAP 进行身份验证时,MySQL 服务器尝试使用 TCP 连接与 LDAP 服务器建立连接,然后发送 LDAP 绑定请求。 如果 LDAP 服务器在配置的时间内未响应 TCP 握手,MySQL 服务器将放弃 TCP 握手尝试并 emit 错误消息。如果超时设置为零,MySQL 服务器将忽略该系统变量设置。更多信息,请参见LDAP 可插拔身份验证超时设置

    Note

    如果您将该变量设置为大于主机系统默认值的超时值,系统将使用较短的超时值。

  • authentication_ldap_sasl_group_search_attr

    Command-Line Format --authentication-ldap-sasl-group-search-attr=value
    System Variable authentication_ldap_sasl_group_search_attr
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value cn

    SASL LDAP 身份验证时,LDAP 目录项中的组名属性的名称。 如果authentication_ldap_sasl_group_search_attr的默认值为cn,搜索将返回cn值作为组名。例如,如果 LDAP 项具有uid值为user1,具有cn属性为mygroup,搜索user1将返回mygroup作为组名。

    如果您想要无组或代理身份验证,请将该变量设置为空字符串。

    如果组搜索属性是isMemberOf,LDAP身份验证直接从用户属性isMemberOf中获取组信息。如果组搜索属性不是isMemberOf,LDAP身份验证搜索所有组,其中用户是成员。 (后者是默认行为。) 这种行为基于LDAP组信息可以以两种方式存储:1) 组项可以有一个名为memberUidmember的属性,值是用户名;2) 用户项可以有一个名为isMemberOf的属性,值是组名。

  • authentication_ldap_sasl_group_search_filter

    Command-Line Format --authentication-ldap-sasl-group-search-filter=value
    System Variable authentication_ldap_sasl_group_search_filter
    Scope 全局
    Dynamic
    SET_VAR Hint 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 的属性值将被返回为组名。

  • authentication_ldap_sasl_init_pool_size

    Command-Line Format --authentication-ldap-sasl-init-pool-size=#
    System Variable authentication_ldap_sasl_init_pool_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 32767
    Unit 连接

    SASL LDAP身份验证的初始连接池大小。根据平均并发身份验证请求到 LDAP 服务器的数量选择该变量的值。

    插件使用authentication_ldap_sasl_init_pool_sizeauthentication_ldap_sasl_max_pool_size来管理连接池:

    系统变量设置的更改可能对已经在池中连接无效。例如,修改LDAP服务器主机、端口或TLS设置不会影响现有连接。然而,如果原始变量值无效且连接池无法初始化,插件将尝试重新初始化池以便下一个LDAP请求。在这种情况下,新的系统变量值将用于重新初始化尝试。

    如果authentication_ldap_sasl_max_pool_size=0禁用池化,每个LDAP连接由插件打开时将使用当前系统变量值。

  • authentication_ldap_sasl_log_status

    Command-Line Format --authentication-ldap-sasl-log-status=#
    System Variable authentication_ldap_sasl_log_status
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 1
    Maximum Value 6

    对于SASL LDAP身份验证,错误日志中的日志级别。以下表格显示了允许的级别值及其含义。

    表8.30:身份验证_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_size

    Command-Line Format --authentication-ldap-sasl-max-pool-size=#
    System Variable authentication_ldap_sasl_max_pool_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1000
    Minimum Value 0
    Maximum Value 32767
    Unit 连接

    对于SASL LDAP身份验证,连接池中的最大连接数。将其设置为0以禁用连接池。

    该变量与authentication_ldap_sasl_init_pool_size一起使用。请参阅该变量的描述。

  • authentication_ldap_sasl_referral

    Command-Line Format --authentication-ldap-sasl-referral[={OFF|ON}]
    System Variable authentication_ldap_sasl_referral
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    对于SASL LDAP身份验证,是否启用LDAP搜索引荐。请参阅LDAP Search Referral

    该变量可以用来覆盖默认的OpenLDAP引荐配置;请参阅LDAP Pluggable Authentication and ldap.conf

  • authentication_ldap_sasl_response_timeout

    Command-Line Format --authentication-ldap-sasl-response-timeout=#
    System Variable authentication_ldap_sasl_response_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 30
    Minimum Value 0
    Maximum Value 31536000
    Unit

    指定 MySQL 服务器等待 LDAP 服务器响应 LDAP 绑定请求的时间(以秒为单位)。

    当 MySQL 账户使用 LDAP 进行身份验证时,MySQL 服务器将向 LDAP 服务器发送 LDAP 绑定请求。如果 LDAP 服务器在配置的时间内未响应请求,MySQL 服务器将放弃请求并 emit 错误信息。如果超时设置为零,MySQL 服务器将忽略该系统变量设置。更多信息,请参见LDAP 可插拔身份验证超时设置

  • authentication_ldap_sasl_server_host

    Command-Line Format --authentication-ldap-sasl-server-host=host_name
    System Variable authentication_ldap_sasl_server_host
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    用于 SASL LDAP 身份验证的 LDAP 服务器主机名。该变量的允许值取决于身份验证方法:

  • authentication_ldap_sasl_server_port

    Command-Line Format --authentication-ldap-sasl-server-port=port_num
    System Variable authentication_ldap_sasl_server_port
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 389
    Minimum Value 1
    Maximum Value 32376

    用于 SASL LDAP 身份验证的 LDAP 服务器 TCP/IP 端口号。

    如果 LDAP 端口号配置为 636 或 3269,插件将使用 LDAPS(LDAP over SSL)而不是 LDAP。(LDAPS 与 startTLS 不同。)

  • authentication_ldap_sasl_tls

    Command-Line Format --authentication-ldap-sasl-tls[={OFF|ON}]
    System Variable authentication_ldap_sasl_tls
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    对于SASL LDAP身份验证,是否将连接插件到LDAP服务器的连接安全化。如果设置了该变量,插件将使用TLS连接安全地连接到LDAP服务器。该变量可以用来override OpenLDAP TLS配置;请参阅LDAP Pluggable Authentication and ldap.conf。如果启用该变量,您可能还想设置authentication_ldap_sasl_ca_path变量。

    MySQL LDAP插件支持StartTLS方法,该方法在plain LDAP连接上初始化TLS。

    使用LDAPS可以通过设置authentication_ldap_sasl_server_port系统变量。

  • authentication_ldap_sasl_user_search_attr

    Command-Line Format --authentication-ldap-sasl-user-search-attr=value
    System Variable authentication_ldap_sasl_user_search_attr
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value uid

    对于SASL LDAP身份验证,LDAP目录条目中的用户名属性名称。如果未提供用户 distinguished name,身份验证插件将使用该属性搜索用户名。例如,如果authentication_ldap_sasl_user_search_attr值为uid,搜索用户名user1将找到具有uid值为user1的条目。

  • authentication_ldap_simple_auth_method_name

    Command-Line Format --authentication-ldap-simple-auth-method-name=value
    System Variable authentication_ldap_simple_auth_method_name
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value SIMPLE
    Valid Values

    SIMPLE

    AD-FOREST

    对于简单的LDAP身份验证,身份验证方法名称。身份验证插件与LDAP服务器之间的通信遵循该身份验证方法。

    Note

    对于所有简单的LDAP身份验证方法,建议还设置TLS参数,以确保与LDAP服务器的通信使用安全连接。

    这些身份验证方法值是允许的:

    • SIMPLE:使用简单的LDAP身份验证。这方法使用一个或两个LDAP绑定操作,取决于MySQL帐户是否指定LDAP用户 distinguished name。请参阅authentication_ldap_simple_bind_root_dn的描述。

    • AD-FOREST:SIMPLE的变体,以便身份验证搜索Active Directory森林中的所有域,直到在某个域中找到用户。

  • authentication_ldap_simple_bind_base_dn

    Command-Line Format --authentication-ldap-simple-bind-base-dn=value
    System Variable authentication_ldap_simple_bind_base_dn
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    对于简单的LDAP身份验证,基础 distinguished name (DN)。该变量可以用来限制搜索的范围,通过将其锚定在搜索树中的某个位置(““base””)。

    假设LDAP用户条目的一些成员具有以下形式:

    uid=user_name,ou=People,dc=example,dc=com

    而另一些LDAP用户条目的成员具有以下形式:

    uid=user_name,ou=Admin,dc=example,dc=com

    然后,搜索就像这样工作:

    • 如果基础 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

    Command-Line Format --authentication-ldap-simple-bind-root-dn=value
    System Variable authentication_ldap_simple_bind_root_dn
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value NULL

    对于简单的LDAP身份验证,根istinguished name(DN)。这个变量与authentication_ldap_simple_bind_root_pwd一起使用,以便在LDAP服务器上进行身份验证,以便执行搜索。身份验证使用一个或两个LDAP绑定操作,取决于MySQL帐户是否命名LDAP用户DN:

    • 如果帐户不命名用户DN: authentication_ldap_simple 使用authentication_ldap_simple_bind_root_dnauthentication_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

    Command-Line Format --authentication-ldap-simple-bind-root-pwd=value
    System Variable authentication_ldap_simple_bind_root_pwd
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String
    Default Value NULL

    简单LDAP身份验证的根DN密码。这变量与authentication_ldap_simple_bind_root_dn一起使用。请参阅该变量的描述。

  • authentication_ldap_simple_ca_path

    Command-Line Format --authentication-ldap-simple-ca-path=value
    System Variable authentication_ldap_simple_ca_path
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String
    Default Value NULL

    简单LDAP身份验证的证书_authority文件路径。如果想要身份验证插件验证LDAP服务器证书,请指定该文件。

    Note

    除了将authentication_ldap_simple_ca_path变量设置为文件名外,您还需要将适当的证书授权机构证书添加到文件中,并启用authentication_ldap_simple_tls系统变量。这些变量可以设置以覆盖默认的OpenLDAP TLS配置;请参阅LDAP Pluggable Authentication and ldap.conf

  • authentication_ldap_simple_connect_timeout

    Command-Line Format --authentication-ldap-simple-connect-timeout=#
    System Variable authentication_ldap_simple_connect_timeout
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 30
    Minimum Value 0
    Maximum Value 31536000
    Unit

    指定MySQL服务器等待与LDAP服务器建立TCP连接的时间(以秒为单位)。

    当MySQL账户使用LDAP进行身份验证时,MySQL服务器尝试使用TCP连接与LDAP服务器建立TCP握手,用于发送LDAP绑定请求。 如果LDAP服务器在TCP握手后不响应,MySQL服务器将放弃TCP握手尝试并 emit错误消息。如果超时设置为零,MySQL服务器将忽略该系统变量设置。更多信息,请参阅Setting Timeouts for LDAP Pluggable Authentication

    Note

    如果您将该变量设置为大于主机系统默认值的超时值,系统将使用较短的超时值。

  • authentication_ldap_simple_group_search_attr

    Command-Line Format --authentication-ldap-simple-group-search-attr=value
    System Variable authentication_ldap_simple_group_search_attr
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String
    Default Value cn

    对于简单的LDAP身份验证,指定LDAP目录条目中的组名的属性名称。如果authentication_ldap_simple_group_search_attr的默认值为cn, 搜索将返回cn值作为组名。例如,如果LDAP条目具有uid值为user1,具有cn属性为mygroup的条目,搜索user1将返回mygroup作为组名。

    如果组搜索属性为isMemberOf, LDAP身份验证直接检索用户属性isMemberOf值,并将其作为组信息。如果组搜索属性不是isMemberOf, LDAP身份验证搜索所有组,其中用户是成员。 (后者是默认行为。) 这种行为基于LDAP组信息可以以两种方式存储:1) 组条目可以具有名为memberUidmember的属性,值是用户名称;2) 用户条目可以具有名为isMemberOf的属性,值是组名称。

  • authentication_ldap_simple_group_search_filter

    Command-Line Format --authentication-ldap-simple-group-search-filter=value
    System Variable authentication_ldap_simple_group_search_filter
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type String
    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的第一个属性值将被返回作为组名。

  • authentication_ldap_simple_init_pool_size

    Command-Line Format --authentication-ldap-simple-init-pool-size=#
    System Variable authentication_ldap_simple_init_pool_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 10
    Minimum Value 0
    Maximum Value 32767
    Unit 连接

    用于简单LDAP身份验证的初始连接池大小。根据LDAP服务器的平均并发身份验证请求次数选择该变量的值。

    插件使用authentication_ldap_simple_init_pool_sizeauthentication_ldap_simple_max_pool_size一起管理连接池:

    插件系统变量设置的更改可能对已经在池中的连接无效。例如,修改LDAP服务器主机、端口或TLS设置不会影响现有连接。然而,如果原始变量值无效且连接池无法初始化,插件将尝试重新初始化池以便下一个LDAP请求。在这种情况下,新的系统变量值将用于重新初始化尝试。

    如果authentication_ldap_simple_max_pool_size=0禁用池化,每个LDAP连接由插件打开时使用当前系统变量值。

  • authentication_ldap_simple_log_status

    Command-Line Format --authentication-ldap-simple-log-status=#
    System Variable authentication_ldap_simple_log_status
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1
    Minimum Value 1
    Maximum Value 6

    对于简单的LDAP身份验证,日志记录级别。以下表格显示了允许的级别值及其含义。

    表8.31:身份验证LDAP简单日志级别

    Option Value Types of Messages Logged
    1 无消息
    2 错误消息
    3 错误和警告消息
    4 错误、警告和信息消息
    5 与前一个级别相同,包括MySQL的调试消息
    6 与前一个级别相同,包括LDAP库的调试消息

  • authentication_ldap_simple_max_pool_size

    Command-Line Format --authentication-ldap-simple-max-pool-size=#
    System Variable authentication_ldap_simple_max_pool_size
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 1000
    Minimum Value 0
    Maximum Value 32767
    Unit 连接

    对于简单的LDAP身份验证,LDAP服务器连接池的最大大小。将该变量设置为0以禁用连接池。

    该变量与authentication_ldap_simple_init_pool_size一起使用。查看该变量的描述。

  • authentication_ldap_simple_referral

    Command-Line Format --authentication-ldap-simple-referral[={OFF|ON}]
    System Variable authentication_ldap_simple_referral
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 布尔
    Default Value OFF

    对于简单的LDAP身份验证,是否启用LDAP搜索引荐。查看LDAP Search Referral

  • authentication_ldap_simple_response_timeout

    Command-Line Format --authentication-ldap-simple-response-timeout=#
    System Variable authentication_ldap_simple_response_timeout
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 整数
    Default Value 30
    Minimum Value 0
    Maximum Value 31536000
    Unit

    指定 MySQL 服务器等待 LDAP 服务器响应 LDAP 绑定请求的时间(以秒为单位)。

    当 MySQL 账户使用 LDAP 进行身份验证时,MySQL 服务器将向 LDAP 服务器发送 LDAP 绑定请求。如果 LDAP 服务器在配置的时间内未响应请求,MySQL 服务器将放弃请求并 emit 错误信息。如果超时设置为零,MySQL 服务器将忽略该系统变量设置。更多信息,请见LDAP 可插拔身份验证超时设置

  • authentication_ldap_simple_server_host

    Command-Line Format --authentication-ldap-simple-server-host=host_name
    System Variable authentication_ldap_simple_server_host
    Scope 全局
    Dynamic
    SET_VAR Hint 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 服务器 URL ldap://example.mem.local:389,域名可以是 mem.local

      Active Directory 森林设置可以有多个域(LDAP 服务器 IP),这些可以通过 DNS 发现。Unix 和 Unix 类系统上,可能需要额外的设置来配置 DNS 服务器,以便将 LDAP 服务器 IP 添加到 Active Directory 域中。关于 DNS SRV 的信息,请见RFC 2782

      假设您的配置具有以下属性:

      • 名称服务器,提供 Active Directory 域信息的 IP 地址是 10.172.166.100

      • LDAP 服务器的名称是 ldap1.mem.localldap3.mem.local,IP 地址是 10.172.166.10110.172.166.103

      您想要使用 SRV 搜索来发现 LDAP 服务器。例如,在命令行中,命令类似于以下所示:

      host -t SRV _ldap._tcp.mem.local

      执行 DNS 配置如下:

      1. 将以下行添加到 /etc/resolv.conf 中,以指定名称服务器,提供 Active Directory 域信息的 IP 地址:

        nameserver 10.172.166.100
      2. 将适当的zone 文件配置为名称服务器,以便将 LDAP 服务器添加到 Active Directory 域中:

        _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.
      3. 可能还需要在/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值,Windows LDAP库将搜索所有域并尝试身份验证。

  • authentication_ldap_simple_server_port

    Command-Line Format --authentication-ldap-simple-server-port=port_num
    System Variable authentication_ldap_simple_server_port
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Integer
    Default Value 389
    Minimum Value 1
    Maximum Value 32376

    简单LDAP身份验证的TCP/IP端口号。

    如果LDAP端口号配置为636或3269,插件将使用LDAPS(LDAP over SSL)而不是LDAP。(LDAPS与startTLS不同。)

  • authentication_ldap_simple_tls

    Command-Line Format --authentication-ldap-simple-tls[={OFF|ON}]
    System Variable authentication_ldap_simple_tls
    Scope Global
    Dynamic Yes
    SET_VAR Hint Applies No
    Type Boolean
    Default Value OFF

    简单LDAP身份验证的连接是否安全。如果启用了该变量,插件将使用TLS连接安全地连接到LDAP服务器。如果启用该变量,您可能还想设置authentication_ldap_simple_ca_path变量。

    MySQL LDAP插件支持StartTLS方法,该方法在plain LDAP连接上初始化TLS。

    LDAPS可以通过设置authentication_ldap_simple_server_port系统变量来使用。

  • authentication_ldap_simple_user_search_attr

    Command-Line Format --authentication-ldap-simple-user-search-attr=value
    System Variable authentication_ldap_simple_user_search_attr
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串
    Default Value uid

    对于简单的LDAP身份验证,LDAP目录条目中的用户名属性的名称。如果没有提供用户 distinguished name,身份验证插件使用该属性搜索用户名。例如,如果authentication_ldap_simple_user_search_attr的值是uid,搜索用户名user1找到具有uid值为user1的条目。

  • authentication_webauthn_rp_id

    Command-Line Format --authentication-webauthn-rp-id=value
    System Variable authentication_webauthn_rp_id
    Scope 全局
    Dynamic
    SET_VAR Hint Applies
    Type 字符串

    该变量用于指定用于服务器端插件安装、设备注册和WebAuthn身份验证的依赖方ID。如果WebAuthn身份验证尝试失败且该值与设备期望的值不同,设备假设它不在与正确的服务器通讯,错误发生。最大值长度为255个字符。