在 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 連線」。