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

4.2 MySQL Shell 工作階段

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

  • Session:針對新的應用程式開發使用此工作階段物件類型,以與提供 X Protocol 的 MySQL 伺服器執行個體通訊。X Protocol 提供與 MySQL 伺服器最佳的整合。若要使用 X Protocol,X Plugin 必須安裝在 MySQL 伺服器執行個體上並啟用,在 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 會先嘗試使用 X Protocol (傳回 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 連線」