在 MySQL Shell 中,与 MySQL Server 实例的连接由会话对象处理。以下是可用的会话对象类型:
Session
: 使用此会话对象类型进行新的应用程序开发,以与支持 X 协议的 MySQL Server 实例通信。X 协议提供了与 MySQL Server 的最佳集成。为了使用 X 协议,X 插件必须安装并启用在 MySQL Server 实例上,从 MySQL 8.0 开始默认情况下已安装并启用。X 插件监听由mysqlx_port
指定的端口,默认为 33060,因此在使用Session
连接时请指定此端口。ClassicSession
: 使用此会话对象类型与不支持 X 协议的 MySQL Server 实例交互。此对象用于使用经典 MySQL 协议对服务器运行 SQL 语句。此类会话提供的开发 API 非常有限。例如,没有 X DevAPI CRUD 操作、没有集合处理,并且不支持绑定。在开发中,尽可能使用Session
对象。
ClassicSession
特定于 MySQL Shell,不能与 X DevAPI 的其他实现一起使用,例如 MySQL 连接器。
当您第一次连接到 MySQL Server 实例时(无论是在启动 MySQL Shell 时还是之后),都会创建一个名为 session
的 MySQL Shell 全局对象来表示此连接。此特定会话对象是全局的,因为一旦创建,它可以在所有 MySQL Shell 执行模式下使用:SQL 模式、JavaScript 模式和 Python 模式。它所表示的连接因此被称为全局会话。变量 session
持有一个指向此会话对象的引用,可以在 MySQL Shell 的 JavaScript 模式和 Python 模式中使用它来处理连接。
session
全局对象可以是 Session
类型的会话对象或 ClassicSession
类型的会话对象,具体取决于您在连接到 MySQL Server 实例时选择的协议。您可以使用命令选项选择协议,也可以将协议指定为提供连接数据的一部分。要查看有关当前全局会话的信息,请运行以下命令:
mysql-js []> session
<ClassicSession:[email protected]:3330>
当全局会话连接时,这将显示会话对象类型和全局会话连接到的 MySQL Server 实例的地址。
如果您在建立连接时明确选择或隐式指示协议,MySQL Shell 会尝试使用该协议建立连接,如果失败则返回错误。如果您的连接参数没有指示协议,MySQL Shell 首先会尝试使用经典 MySQL 协议建立连接(返回 Session
类型的会话对象),如果失败,则会尝试使用 X 协议建立连接。
要验证连接尝试的结果,请使用 MySQL Shell 的 \status
命令或 shell.status()
方法。这些方法将显示由 session
全局对象表示的连接的连接协议和其他信息,或者如果 session
全局对象未连接到 MySQL 服务器,则返回 “未连接”。例如:
mysql-js []> shell.status()
MySQL Shell version 8.1.0-commercial
Connection Id: 9
Current schema:
Current user: root@localhost
SSL: Cipher in use: TLS_AES_256_GCM_SHA384 TLSv1.3
Using delimiter: ;
Server version: 8.1.0-commercial MySQL Enterprise Server - Commercial
Protocol version: Classic 10
Client library: 8.1.0
Connection: localhost via TCP/IP
TCP port: 3306
Server characterset: utf8mb4
Schema characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
Result characterset: utf8mb4
Compression: Disabled
Uptime: 9 hours 42 min 5.0000 sec
Threads: 2 Questions: 61 Slow queries: 0 Opens: 176 Flush tables: 3 Open tables: 95 Queries per second avg: 0.001
本节重点介绍了代表与 MySQL Server 实例连接的会话对象以及 session
全局对象。有关本节中提到的每种连接到 MySQL Server 实例的方式的完整说明和示例,以及可用于连接的其他选项,请参见 第 4.3 节,“MySQL Shell 连接”。