MySQL Shell 可以使用 X 协议和经典 MySQL 协议连接到 MySQL 服务器。您可以通过以下方式全局指定 MySQL Shell 连接到的 MySQL 服务器实例
在启动 MySQL Shell 时,使用命令参数。请参阅 第 4.3.1 节,“使用单个参数连接”。
在 MySQL Shell 运行时,使用
\connect
命令。请参阅 第 3.1 节,“MySQL Shell 命令”。instance
在 Python 或 JavaScript 模式下运行时,使用
shell.connect()
方法。
这些连接到 MySQL 服务器实例的方法创建了全局会话,这是一个可以在所有 MySQL Shell 执行模式(SQL 模式、JavaScript 模式和 Python 模式)中使用的连接。名为 session
的 MySQL Shell 全局对象表示此连接,变量 session
保存对其的引用。您还可以通过使用 shell.openSession()
、mysqlx.getSession()
、mysql.getSession()
或 mysql.getClassicSession()
函数创建表示其他连接到 MySQL 服务器实例的多个附加会话对象。这些连接可以在您创建它们的模式中使用,并且一次只能将其中一个分配为 MySQL Shell 的全局会话,以便它可以在所有模式中使用。有关会话对象的说明、如何操作全局会话以及如何从 MySQL Shell 实例创建和管理多个连接,请参阅 第 4.2 节,“MySQL Shell 会话”。
所有这些不同的连接到 MySQL 服务器实例的方法都支持以下方式指定连接
使用类似 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 服务器实例支持加密连接,则可以启用并配置连接以使用加密。有关说明,请参阅 第 4.3.4 节,“使用加密连接”。
经典 MySQL 协议连接支持使用 LDAP 和 Kerberos 身份验证。有关使用它们的说明,请参阅 第 4.3.5 节,“使用 LDAP 和 Kerberos 身份验证”。
MySQL Shell 支持 SSH 隧道连接到 MySQL 服务器实例。有关说明,请参阅 第 4.3.6 节,“使用 SSH 隧道”。
您还可以请求连接使用压缩来压缩在 MySQL Shell 和 MySQL 服务器实例之间发送的所有数据。有关说明,请参阅 第 4.3.7 节,“使用压缩连接”。
如果与服务器的连接丢失,您可以使用 \reconnect
命令,该命令使 MySQL Shell 使用现有的连接参数尝试对当前全局会话进行多次重新连接尝试。 \reconnect
命令不带任何参数或选项。如果这些尝试不成功,则可以使用 \connect
命令并指定连接参数来建立新的连接。