配置数据库节点和路由器

使用类似如下的设置,配置数据库节点和路由器以通过安全 SSL 连接进行连接。

路由器

在路由器配置文件中,确保存在以下设置:

CLIENT_SSL_MODE=PREFERRED
CLIENT_SSL_CERT=*absolute path of the generated router certificate*
CLIENT_SSL_KEY=*absolute path of the generated router key*
SERVER_SSL_MODE=AS_CLIENT
SERVER_SSL_VERIFY=VERIFY_IDENTITY
SERVER_SSL_CA=*absolute path of the common ca.pem placed on this server*

配置后,向所有用户提供读取权限,并撤消组和其他用户的写入权限。

数据库节点

在每个 MySQL 数据库节点中,确保在相应节下设置以下内容:

SSL_CAPATH=*absolute path of the common ca.pem placed on this node*
SSL_CA=ca.pem
SSL_CERT=server-cert.pem
SSL_KEY=server-key.pem
GROUP_REPLICATION_SSL_MODE=REQUIRED
REQUIRE_SECURE_TRANSPORT=ON

配置数据库节点后,向所有用户提供读取权限,并撤消组和其他用户的写入权限。

测试连接

在配置就位并且向配置文件提供了相应权限之后,通过重新启动数据库节点和路由器来测试设置。

测试数据库节点连接

确保数据库节点不终止。有关指示 SSL 设置未被接受的任何错误或警告,请查看配置文件中“日志错误”设置下的日志。尝试使用以下命令行连接到特定节点(使用此节点的证书中指定的公用名称):

mysql -u *username* -p *password* -h *db_common_name* -P *db_port* --ssl-mode=VERIFY_IDENTITY --ssl-ca=*path/of/ca.pem*

确保连接不会生成任何错误。

同样,通过提供相应的参数值与不同的 SSL 模式连接。注:对于 VERIFY_IDENTITY,ssl-cert 和 ssl-key 不是必需的。但是,如果数据库用户需要 X509 验证,则必须同时为 ssl-cert 和 ssl-key 提供 client-cert 和 client-key。

使用此方法测试所有数据库节点,然后测试路由器连接。

测试路由器连接

数据库节点启动后,重新启动路由器并对其进行监视,确保路由器不会终止。

有关指示 SSL 设置未被接受的任何错误或警告,请查看配置文件中“日志错误”设置下的日志。如果没有错误或警告,请尝试使用以下命令从路由器连接到数据库。确保使用路由器证书中指定的公用名称:

mysql -u *username* -p *password* -h *router_common_name* -P *router_port* --ssl-mode=VERIFY_IDENTITY --ssl-ca=*path/of/ca.pem*

确保连接顺利进行,没有任何错误。

验证从路由器到数据库节点的连接

首先使用以下命令确定当前活动的主节点:

MySQL> SHOW VARIABLES like '%hosts%';

现在,从数据库注销并将数据库切换到其他节点。然后,使用以下命令再次从路由器登录到数据库:

mysql -u *username* -p *password* -h *router_common_name* -P *router_port* --ssl-mode=VERIFY_IDENTITY --ssl-ca=*path/of/ca.pem*

再次使用同一命令检查当前活动的主节点:

MySQL> SHOW VARIABLES like '%hosts%';