如连接数量管理中所述,为了能够在用于普通连接的接口上已建立max_connections
个连接时执行管理操作,MySQL 服务器允许拥有CONNECTION_ADMIN
权限(或已弃用的SUPER
权限)的用户建立单个管理连接。
服务器还允许为管理连接专用一个 TCP/IP 端口,如下节所述。
管理连接接口具有以下特性:
仅当在启动时设置了
admin_address
系统变量以指示其 IP 地址时,服务器才会启用该接口。如果未设置admin_address
,则服务器不维护管理接口。admin_port
系统变量指定接口 TCP/IP 端口号(默认值为 33062)。对管理连接的数量没有限制,但仅允许拥有
SERVICE_CONNECTION_ADMIN
权限的用户进行连接。create_admin_listener_thread
系统变量允许 DBA 在启动时选择管理接口是否拥有自己的单独线程。默认值为OFF
;也就是说,主接口上用于普通连接的管理器线程也处理管理接口的连接。
服务器my.cnf
文件中的以下几行在回环接口上启用了管理接口,并将其配置为使用端口号 33064(即,与默认端口不同的端口):
[mysqld]
admin_address=127.0.0.1
admin_port=33064
MySQL 客户端程序通过指定适当的连接参数来连接到主接口或管理接口。如果在本地主机上运行的服务器对主接口和管理接口使用默认的 TCP/IP 端口号 3306 和 33062,则以下命令将连接到这些接口:
mysql --protocol=TCP --port=3306
mysql --protocol=TCP --port=33062
管理接口有其自身的加密连接配置参数。这些参数对应于主接口参数,但可以为管理接口独立配置加密连接:
admin_tls_
和 xxx
admin_ssl_
系统变量类似于 xxx
tls_
和 xxx
ssl_
系统变量,但它们配置的是管理接口的 TLS 上下文,而不是主接口的 TLS 上下文。xxx
有关配置连接加密支持的常规信息,请参阅第 8.3.1 节“配置 MySQL 以使用加密连接”和第 8.3.2 节“加密连接 TLS 协议和密码”。该讨论是针对主连接接口编写的,但管理连接接口的参数名称与其类似。请将该讨论与以下备注一起使用,这些备注提供了特定于管理接口的信息。
管理接口的 TLS 配置遵循以下规则:
管理接口支持加密连接。对于该接口上的连接,适用的 TLS 上下文取决于是否配置了任何非默认的管理 TLS 参数:
如果所有管理 TLS 参数都使用其默认值,则管理接口使用与主接口相同的 TLS 上下文。
如果任何管理 TLS 参数具有非默认值,则管理接口使用由其自身参数定义的 TLS 上下文。(如果任何
admin_tls_
或xxx
admin_ssl_
系统变量设置为与其默认值不同的值,则会出现这种情况。)如果无法从这些参数创建有效的 TLS 上下文,则管理接口会回退到主接口 TLS 上下文。xxx
可以通过将
admin_tls_version
系统变量设置为空值来禁用到管理界面的加密连接,以指示不支持任何 TLS 版本。例如,服务器my.cnf
文件中的以下几行将禁用管理界面上的加密连接[mysqld] admin_tls_version=''
示例
服务器
my.cnf
文件中的此配置启用了管理界面,但未设置特定于该界面的任何 TLS 参数[mysqld] admin_address=127.0.0.1
因此,管理界面支持加密连接(因为在启用管理界面时默认情况下支持加密),并使用主界面的 TLS 上下文。当客户端连接到管理界面时,它们应使用与主界面上的普通连接相同的证书和密钥文件。例如(在一行中输入命令)
mysql --protocol=TCP --port=33062 --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
此服务器配置启用了管理界面,并设置了特定于该界面的 TLS 证书和密钥文件参数
[mysqld] admin_address=127.0.0.1 admin_ssl_ca=admin-ca.pem admin_ssl_cert=admin-server-cert.pem admin_ssl_key=admin-server-key.pem
因此,管理界面支持使用其自己的 TLS 上下文进行加密连接。当客户端连接到管理界面时,它们应使用特定于该界面的证书和密钥文件。例如(在一行中输入命令)
mysql --protocol=TCP --port=33062 --ssl-ca=admin-ca.pem --ssl-cert=admin-client-cert.pem --ssl-key=admin-client-key.pem