MySQL Shell 9.0  /  MySQL Shell 入門  /  MySQL Shell 工作階段

4.2 MySQL Shell 工作階段

在 MySQL Shell 中,與 MySQL 伺服器執行個體的連線由工作階段物件處理。可以使用以下類型的工作階段物件:

  • Session:將此工作階段物件類型用於新的應用程式開發,以與可以使用 X Protocol 的 MySQL 伺服器執行個體通訊。X Protocol 提供與 MySQL 伺服器的最佳整合。為了使 X Protocol 可用,必須在 MySQL 伺服器執行個體上安裝並啟用 X Plugin,而從 MySQL 8.0 開始預設會啟用。X Plugin 會接聽 mysqlx_port 所指定的連接埠,預設為 33060,因此請在使用 Session 的連線中指定此連接埠。

  • ClassicSession:使用此工作階段物件類型與沒有 X Protocol 可用的 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 伺服器執行個體位址。

如果您明確選擇通訊協定,或在連線時隱含指出通訊協定,則 MySQL Shell 會嘗試使用該通訊協定建立連線,如果失敗,則會傳回錯誤。如果您的連線參數未指出通訊協定,則 MySQL Shell 會先嘗試使用傳統 MySQL 通訊協定 (傳回 Session 類型的工作階段物件) 建立連線,如果失敗,則會嘗試使用 X Protocol 建立連線。

若要驗證您的連線嘗試結果,請使用 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 連線」