6.5.5.2 设置 MySQL 功能的 TCP 端口上下文

如果启用某些 MySQL 功能,则可能需要为这些功能使用的其他端口设置 SELinux TCP 端口上下文。如果 MySQL 功能使用的端口没有正确的 SELinux 上下文,则这些功能可能无法正常运行。

以下各节描述如何为 MySQL 组复制和 InnoDB Cluster 设置端口上下文。通常,可以使用相同的方法为其他 MySQL 功能设置端口上下文。有关 MySQL 功能使用的端口的信息,请参考MySQL 端口参考

设置用于组复制的 TCP 端口上下文

如果启用了 SELinux,则必须为组复制通信端口设置端口上下文,该上下文由group_replication_local_address变量定义。 mysqld必须能够绑定到组复制通信端口并在那里侦听。要查看 MySQL 当前使用的端口,请发出:

semanage port -l | grep mysqld

假设“组复制”通信端口为 33061,请通过发出以下命令来设置端口上下文:

semanage port -a -t mysqld_port_t -p tcp 33061

从 MySQL 8.0.14 到 MySQL 8.0.17,必须将mysql_connect_any SELinux 布尔值设置为ON,以允许组复制的组通信系统(GCS)组件与本地组通信引擎(XCom)实例之间进行通信。从 MySQL 8.0.18 开始,不需要或不建议启用mysql_connect_any

setsebool -P mysql_connect_any=ON
设置 InnoDB 群集的 TCP 端口上下文

如果启用了 SELinux,则必须为 InnoDB Cluster 使用的通信端口设置端口上下文。要查看 MySQL 当前使用的端口,请发出:

semanage port -l | grep mysqld

假设 InnoDB Cluster 使用的其他通信端口是 33060 和 33061,请通过发出以下命令来设置端口上下文:

semanage port -a -t mysqld_port_t -p tcp 33060
semanage port -a -t mysqld_port_t -p tcp 33061