MySQL8 中文参考(二十八)(2)https://developer.aliyun.com/article/1566113
- 对于 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(SSL 上的 LDAP)而不是 LDAP。(LDAPS 与startTLS
不同。) authentication_ldap_sasl_tls
命令行格式 | --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 forest 中搜索所有域,在每个 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 Pluggable Authentication and ldap.conf 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 |
最大值(≥ 8.0.18) | 6 |
最大值(≤ 8.0.17) | 5 |
- 对于简单的 LDAP 身份验证,写入错误日志的消息的日志级别。下表显示了允许的级别值及其含义。
表 8.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 服务器 URL 为ldap://example.mem.local:389
,域名可以是mem.local
。Active Directory 森林设置可以拥有多个域(LDAP 服务器 IP),可以使用 DNS 发现。在 Unix 和类 Unix 系统上,可能需要进行一些额外的设置来配置您的 DNS 服务器,使用指定 Active Directory 域的 LDAP 服务器的 SRV 记录。有关 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
。
- 希望能够通过 SRV 搜索发现 LDAP 服务器。例如,在命令行中,类似这样的命令应该列出 LDAP 服务器:
host -t SRV _ldap._tcp.mem.local
- 执行以下 DNS 配置:
- 添加一行到
/etc/resolv.conf
,指定提供有关 Active Directory 域信息的名称服务器:
nameserver 10.172.166.100
- 针对 LDAP 服务器配置适当的区域文件,包含 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 Hint Applies |
否 |
类型 | 整数 |
默认值 | 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 Hint Applies |
否 |
类型 | 布尔值 |
默认值 | 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
的条目。
MySQL8 中文参考(二十八)(4)https://developer.aliyun.com/article/1566115