MySQL Shell 可以使用 X 协议和经典 MySQL 协议连接到 MySQL 服务器。您可以通过以下方式指定 MySQL Shell 全局连接的 MySQL 服务器实例:
当您启动 MySQL Shell 时,使用命令参数。请参阅 第 4.3.1 节,“使用单独的参数连接”。
当 MySQL Shell 运行时,使用命令。请参阅 第 3.1 节,“MySQL Shell 命令”。
\connect
instance
在 Python 或 JavaScript 模式下运行时,使用该
shell.connect()
方法。
这些连接到 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
命令并指定连接参数来建立新的连接。