MySQL 外壳 8.0  / 第 4 章 MySQL Shell 入门  /  4.3 MySQL Shell 连接

4.3 MySQL Shell 连接

MySQL Shell 可以使用 X 协议和经典 MySQL 协议连接到 MySQL 服务器。您可以通过以下方式指定 MySQL Shell 全局连接的 MySQL 服务器实例:

这些连接到 MySQL 服务器实例的方法创建了全局会话,这是一个可以在所有 MySQL Shell 执行模式中使用的连接:SQL 模式、JavaScript 模式和 Python 模式。名为的 MySQL Shell 全局对象 session表示此连接,变量session持有对它的引用。您还可以通过使用 shell.openSession()mysqlx.getSession()mysql.getSession()mysql.getClassicSession()功能。这些连接可以在您创建它们的模式下使用,并且一次可以将其中一个分配为 MySQL Shell 的全局会话,因此它可以在所有模式下使用。有关会话对象的说明、如何对全局会话进行操作以及如何从 MySQL Shell 实例创建和管理多个连接,请参阅第 4.2 节,“MySQL Shell 会话”

所有这些连接到 MySQL 服务器实例的不同方式都支持指定连接,如下所示:

  • 使用类似 URI 的字符串指定的参数使用诸如myuser@example.com: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 user@example.com?connect-timeout=2000
// Increase the timeout to 20 seconds
mysql-js> \connect user@example.com?connect-timeout=20000

要禁用超时,请将 的值设置 connect-timeout为 0,这意味着客户端会等待底层套接字超时,这取决于平台。

当一台或多台服务器无法访问时,某些打开许多服务器连接的操作可能需要很长时间才能执行,例如shell.connect()命令。连接超时可能无法为响应提供足够的时间。

从 MySQL Shell 8.0.28 开始,您可以使用 MySQL Shell 配置选项connectTimeout为任何不使用 AdminAPI 的会话设置默认连接超时。

除了 TCP 连接,您还可以使用 Unix 套接字文件或 Windows 命名管道进行连接。有关说明,请参阅 第 4.3.2 节,“使用 Unix 套接字和 Windows 命名管道进行连接”

如果 MySQL 服务器实例支持加密连接,您可以启用和配置连接以使用加密。有关说明,请参阅 第 4.3.3 节,“使用加密连接”

从 MySQL Shell 8.0.27 开始,经典 MySQL 协议连接支持使用 LDAP 和 Kerberos 身份验证。有关使用它们的说明,请参阅 第 4.3.4 节,“使用 LDAP 和 Kerberos 身份验证”

从 MySQL Shell 8.0.28 开始,MySQL Shell 支持 SSH 隧道连接到 MySQL 服务器实例。有关说明,请参阅 第 4.3.5 节 “使用 SSH 隧道”

您还可以请求连接对 MySQL Shell 和 MySQL 服务器实例之间发送的所有数据使用压缩。有关说明,请参阅 第 4.3.6 节,“使用压缩连接”

如果与服务器的连接丢失,您可以使用该 \reconnect命令,它使 MySQL Shell 使用现有连接参数为当前全局会话尝试多次重新连接尝试。该 \reconnect命令的指定没有任何参数或选项。如果这些尝试不成功,您可以使用该\connect 命令并指定连接参数来建立新的连接。