MySQL Shell 9.0  /  ...  /  连接到服务器实例

6.2.2 连接到服务器实例

MySQL Shell 使您能够使用各种 API,并支持指定连接,如 使用 URI 类字符串或键值对连接到服务器 中所述。您可以使用 URI 类字符串或键值对指定连接。在 AdminAPI 中不支持 其他连接参数。本文档使用 URI 类连接字符串演示 AdminAPI。

对于 AdminAPI 操作,您只能使用 TCP/IP 连接和经典 MySQL 协议连接到 InnoDB 集群中的服务器实例。不支持使用 Unix 套接字和命名管道进行 AdminAPI 操作,也不支持使用 X 协议进行 AdminAPI 操作。相同的限制适用于服务器实例之间连接。

注意

客户端应用程序可以使用 X 协议以及 Unix 套接字和命名管道连接到 InnoDB 集群中的实例。这些限制仅适用于使用 AdminAPI 命令进行的管理操作,以及实例之间的连接。

例如,要以用户 myuser 身份连接到位于 www.example.com 的 MySQL 服务器实例,端口为 3306,请使用连接字符串

[email protected]:3306

要将此连接字符串与 AdminAPI 操作(例如 dba.configureInstance())一起使用,您需要确保将连接字符串解释为字符串。例如,通过将连接字符串括在单引号(')或双引号(")中。

如果您使用的是 AdminAPI 的 JavaScript 实现,请执行

mysql-js> > dba.configureInstance('myuser@www.example.com:3306')

如果您使用的是 AdminAPI 的 Python 实现,请执行

mysql-py> dba.configure_instance('myuser@www.example.com:3306')

如果您在默认交互模式下运行 MySQL Shell,系统会提示您输入密码。AdminAPI 支持 MySQL Shell 的 第 4.4 节,“可插拔密码存储”,并且在您存储用于连接到实例的密码后,系统将不再提示您输入密码。

MySQL Shell 默认尝试使用 X 协议连接到服务器实例。如果您在执行 AdminAPI 操作进行连接时没有指定连接类型,MySQL Shell 的自动协议检测会在创建经典 MySQL 协议会话之前,短暂地创建一个 X 协议会话。

除非您连接到仅使用 MySQL 路由器管理的端口的两个辅助(只读)实例的 InnoDB 集群,否则这种行为不会产生任何影响。在这种情况下,两个实例之间的负载平衡不会被正确地管理,并且始终使用相同的实例。为了避免这种副作用,您可以通过添加 --mc--mysql 选项显式地指定经典 MySQL 协议会话。

当一个或多个服务器实际上无法访问时,某些打开到服务器的许多连接的操作执行起来可能需要很长时间,例如 cluster.status() 命令。连接超时可能无法提供足够的时间来响应。

您可以使用 MySQL Shell 配置选项 dba.connectTimeout 来设置使用 AdminAPI 的任何会话的默认连接超时(以秒为单位)。