#### 6.7.5.2 为 MySQL 功能设置 TCP 端口上下文

[](<>)

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

以下部分描述了如何为 MySQL 功能设置端口上下文。通常，可以使用相同的方法为任何 MySQL 功能设置端口上下文。有关 MySQL 功能使用的端口的信息，请参阅[MySQL 端口参考](https://dev.mysql.com/doc/mysql-port-reference/en/).

从 MySQL 8.0.14 到 MySQL 8.0.17，`mysql_connect_any`SELinux 布尔值必须设置为`在`.从 MySQL 8.0.18 开始，启用`mysql_connect_any`不是必需的或推荐的。

```
setsebool -P mysql_connect_any=ON
```

##### 为组复制设置 TCP 端口上下文

[](<>)

如果启用 SELinux，您必须为 Group Replication 通信端口设置端口上下文，该端口由[`group_replication_local_address`](group-replication-options.html#sysvar_group_replication_local_address)多变的。[**mysqld**](mysqld.html)必须能够绑定到组复制通信端口并在那里侦听。InnoDB Cluster 依赖于 Group Replication，因此这同样适用于集群中使用的实例。要查看 MySQL 当前使用的端口，请发出：

```
semanage port -l | grep mysqld
```

假设 Group Replication 通信端口是 33061，通过发出以下命令设置端口上下文：

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

##### 为文档存储设置 TCP 端口上下文

[](<>)

如果启用 SELinux，则必须为 X Plugin 使用的通信端口设置端口上下文，该端口由[`mysqlx_port`](x-plugin-options-system-variables.html#sysvar_mysqlx_port)多变的。[**mysqld**](mysqld.html)必须能够绑定到 X Plugin 通信端口并在那里侦听。

假设 X Plugin 通信端口是 33060，通过发出以下命令设置端口上下文：

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

##### 为 MySQL 路由器设置 TCP 端口上下文

[](<>)

如果启用了 SELinux，则必须为 MySQL Router 使用的通信端口设置端口上下文。假设 MySQL 路由器使用的其他通信端口是默认的 6446、6447、64460 和 64470，则在每个实例上通过发出以下命令设置端口上下文：

```
semanage port -a -t mysqld_port_t -p tcp 6446
semanage port -a -t mysqld_port_t -p tcp 6447
semanage port -a -t mysqld_port_t -p tcp 64460
semanage port -a -t mysqld_port_t -p tcp 64470
```
