MySQL 外壳 8.0  / 第 4 章 MySQL Shell 入门  /  4.2 MySQL Shell 会话

4.2 MySQL Shell 会话

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

  • Session:使用此会话对象类型进行新的应用程序开发,以便与 X 协议可用的 MySQL 服务器实例进行通信。X 协议提供了与 MySQL 服务器的最佳集成。要使 X 协议可用,必须在 MySQL 服务器实例上安装并启用 X 插件,这是 MySQL 8.0 的默认设置。在 MySQL 5.7 中,必须手动安装 X Plugin。有关详细信息,请参阅 X 插件。X Plugin 监听 指定的端口 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持有对此会话对象的引用,并且可以在 JavaScript 模式和 Python 模式下的 MySQL Shell 中使用以处理连接。

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

mysql-js []> session

<ClassicSession:user@example.com:3330>

连接全局会话时,显示会话对象类型和全局会话连接到的 MySQL Server 实例的地址。

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

要验证连接尝试的结果,请使用 MySQL Shell 的\status命令或 shell.status()方法。这些显示连接协议和有关由全局对象表示的连接的其他信息,或者如果 全局对象未连接到 MySQL 服务器,则session返回未连接” 。session例如:

mysql-js []> shell.status()
MySQL Shell version 8.0.18

Session type:                 X Protocol
Connection Id:                198
Current schema:               
Current user:                 user@example.com
SSL:                          Cipher in use: TLS_AES_256_GCM_SHA384 TLSv1.3
Using delimiter:              ;
Server version:               8.0.18 MySQL Community Server - GPL
Protocol version:             X Protocol
Client library:               8.0.18
Connection:                   TCP/IP
TCP port:                     33060
Server characterset:          utf8mb4
Schema characterset:          utf8mb4
Client characterset:          utf8mb4
Conn. characterset:           utf8mb4
Compression:                  Enabled (zstd)
Uptime:                       31 min 42.0000 sec

Threads: 8  Questions: 2622  Slow queries: 0  Opens: 298  Flush tables: 3  Open tables: 217  Queries per second avg: 1.378

本节重点解释表示与 MySQL 服务器实例的连接的会话对象,以及 session全局对象。有关本节中提到的连接到 MySQL 服务器实例的每种方法的完整说明和示例,以及可用于连接的其他选项,请参阅 第 4.3 节,“MySQL Shell 连接”