MySQL Shell 可以使用 X 协议和经典 MySQL 协议连接到 MySQL Server。您可以通过以下方式全局指定 MySQL Shell 连接到的 MySQL Server 实例
启动 MySQL Shell 时,使用命令参数。参见 第 4.3.1 节,“使用单个参数连接”。
MySQL Shell 运行时,使用
\connect
命令。参见 第 3.1 节,“MySQL Shell 命令”。instance
在 Python 或 JavaScript 模式下运行时,使用
shell.connect()
方法。
这些连接到 MySQL Server 实例的方法创建全局会话,这是一个可以在所有 MySQL Shell 执行模式(SQL 模式、JavaScript 模式和 Python 模式)中使用的连接。名为 session
的 MySQL Shell 全局对象表示此连接,变量 session
保存对它的引用。您还可以使用 shell.openSession()
、mysqlx.getSession()
、mysql.getSession()
或 mysql.getClassicSession()
函数创建多个代表其他 MySQL Server 实例连接的额外会话对象。这些连接可以在您创建它们的模式中使用,并且它们中的一个可以在任何时候被指定为 MySQL Shell 的全局会话,以便它可以在所有模式中使用。有关会话对象的说明、如何在全局会话上进行操作以及如何从 MySQL Shell 实例创建和管理多个连接,请参见 第 4.2 节,“MySQL Shell 会话”。
所有这些连接到 MySQL Server 实例的不同方式都支持以下连接指定方式
使用 URI 类字符串指定的参数使用类似
[email protected]:3306/main-schema
的语法。有关完整语法,请参见 使用 URI 类连接字符串连接。使用键值对指定的参数使用类似
{user:'myuser', host:'example.com', port:3306, schema:'main-schema'}
的语法。这些键值对以实现的语言自然结构提供。例如,您可以使用 JavaScript 中的 JSON 对象或 Python 中的字典以键值对的形式提供连接参数。有关完整语法,请参见 使用键值对连接。
有关更多信息,请参见 使用 URI 类字符串或键值对连接到服务器。
无论您选择何种连接方式,了解 MySQL Shell 如何处理密码都非常重要。默认情况下,假定连接需要密码。密码(最大长度为 128 个字符)将在登录提示符处请求,并且可以使用 第 4.4 节,“可插拔密码存储” 进行存储。如果指定的用户拥有无密码帐户(不安全,不建议使用),或者如果正在使用套接字对等身份验证(例如,使用 Unix 套接字连接时),您必须明确指定未提供密码并且不需要密码提示。为此,请使用以下方法之一
如果您使用的是 URI 类连接字符串,请在字符串中的
user
后放置一个:
,但不要在它之后指定密码。如果您使用的是键值对,请在
password
键后使用''
提供空字符串。如果您使用的是单个参数,请指定
--no-password
选项,或使用空值指定--password=
选项。
如果您没有为连接指定参数,则使用以下默认值
user
默认值为当前系统用户名。host
默认值为localhost
。port
默认情况下使用 X 协议连接时为 X 插件端口 33060,使用经典 MySQL 协议连接时为端口 3306。
要配置连接超时,请使用 connect-timeout
连接参数。connect-timeout
的值必须是非负整数,以毫秒为单位定义时间范围。超时默认值为 10000 毫秒,即 10 秒。例如
// Decrease the timeout to 2 seconds.
mysql-js> \connect [email protected]?connect-timeout=2000
// Increase the timeout to 20 seconds
mysql-js> \connect [email protected]?connect-timeout=20000
要禁用超时,请将 connect-timeout
的值设置为 0,这意味着客户端将等待底层套接字超时,这取决于平台。
某些对服务器打开大量连接的操作可能需要很长时间才能执行,例如,shell.connect()
命令。连接超时可能无法提供足够的时间来响应。
您可以使用 MySQL Shell 配置选项 connectTimeout
来设置除 AdminAPI 之外的任何会话的默认连接超时。
除了 TCP 连接,您还可以使用 Unix 套接字文件或 Windows 命名管道进行连接。有关说明,请参见 第 4.3.3 节,“使用 Unix 套接字和 Windows 命名管道连接”。
如果 MySQL Server 实例支持加密连接,您可以启用并配置连接以使用加密。有关说明,请参见 第 4.3.4 节,“使用加密连接”。
对于经典 MySQL 协议连接,支持使用 LDAP 和 Kerberos 身份验证。有关使用这些方法的说明,请参见 第 4.3.5 节,“使用 LDAP 和 Kerberos 身份验证”。
MySQL Shell 支持 SSH 隧道连接到 MySQL Server 实例。有关说明,请参见 第 4.3.6 节,“使用 SSH 隧道”。
您还可以请求连接为在 MySQL Shell 和 MySQL Server 实例之间发送的所有数据使用压缩。有关说明,请参见 第 4.3.7 节,“使用压缩连接”。
如果与服务器的连接断开,您可以使用 \reconnect
命令,该命令使 MySQL Shell 使用现有的连接参数尝试对当前全局会话进行多次重新连接尝试。\reconnect
命令在不带任何参数或选项的情况下指定。如果这些尝试不成功,您可以使用 \connect
命令并指定连接参数进行新的连接。