MySQL Shell 8.4  /  MySQL Shell 入门  /  MySQL Shell 会话

4.2 MySQL Shell 会话

在 MySQL Shell 中,与 MySQL 服务器实例的连接由会话对象处理。以下类型的会话对象可用

  • Session:对于新的应用程序开发,使用此类型的会话对象与支持 X 协议的 MySQL 服务器实例进行通信。X 协议提供了与 MySQL 服务器的最佳集成。要使用 X 协议,必须在 MySQL 服务器实例上安装和启用 X 插件,默认情况下,从 MySQL 8.0 开始,该插件已安装并启用。X 插件监听由 mysqlx_port 指定的端口,该端口默认为 33060,因此请使用 Session 使用连接指定此端口。

  • ClassicSession:使用此类型的会话对象与不支持 X 协议的 MySQL 服务器实例进行交互。此对象用于针对使用经典 MySQL 协议的服务器运行 SQL。此类会话可用的开发 API 非常有限。例如,没有 X DevAPI CRUD 操作,没有集合处理,并且不支持绑定。在开发中,尽可能优先使用 Session 对象。

重要

ClassicSession 是特定于 MySQL Shell 的,不能与其他 X DevAPI 实现(如 MySQL 连接器)一起使用。

当您首次连接到 MySQL 服务器实例时,无论是在启动 MySQL Shell 时还是之后,都会创建一个名为 session 的 MySQL Shell 全局对象来表示此连接。此特定会话对象是全局的,因为一旦创建,它就可以在所有 MySQL Shell 执行模式中使用:SQL 模式、JavaScript 模式和 Python 模式。因此,它所表示的连接被称为全局会话。变量 session 持有此会话对象的引用,并且可以在 MySQL Shell 的 JavaScript 模式和 Python 模式中使用来处理连接。

session 全局对象可以是 Session 类型的会话对象或 ClassicSession 类型的会话对象,具体取决于您在连接到 MySQL 服务器实例时选择的协议。您可以使用命令选项选择协议,也可以将其指定为提供的连接数据的一部分。要查看有关当前全局会话的信息,请发出

mysql-js []> session

<ClassicSession:[email protected]:3330>

当全局会话已连接时,这将显示会话对象类型和全局会话连接到的 MySQL 服务器实例的地址。

如果您在建立连接时明确或隐式地选择协议,MySQL Shell 会尝试使用该协议建立连接,并在失败时返回错误。如果您的连接参数未指定协议,MySQL Shell 会首先尝试使用 X 协议建立连接(返回 Session 类型的会话对象),如果失败,则尝试使用经典 MySQL 协议建立连接(返回 ClassicSession 类型的会话对象)。

要验证连接尝试的结果,请使用 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 服务器实例连接的会话对象,以及 session 全局对象。有关本节中提到的连接到 MySQL 服务器实例的每种方式的完整说明和示例,以及连接可用的其他选项,请参阅 第 4.3 节,“MySQL Shell 连接”