MySQL Shell 會頻繁更新以修正錯誤和新增功能。強烈建議您務必使用最新的可用版本。最新版本的 MySQL Shell 可與任何 GA 版本的 MySQL 8.0 或更高版本搭配使用。
MySQL Shell 提供下列功能。
MySQL Shell 會處理以 JavaScript、Python 和 SQL 撰寫的程式碼。任何執行的程式碼都會根據目前啟用的語言,以其中一種語言來處理。也有特定的 MySQL Shell 命令,其字首為 \
,可讓您設定 MySQL Shell,而不論目前選取的語言為何。如需更多資訊,請參閱第 3.1 節:「MySQL Shell 命令」。
MySQL Shell 使用 Python 3,而不是 Python 2.7。對於包含系統支援安裝 Python 3 的平台,MySQL Shell 會使用最新的可用版本,最低支援版本為 Python 3.6。對於未包含 Python 3 或未達到最低支援版本的平台,MySQL Shell 會維持與 Python 2.6 和 Python 2.7 的程式碼相容性,因此如果您需要其中一個較舊的版本,可以使用適當的 Python 版本從來源建置 MySQL Shell。
對於未包含 Python 3 或未達到最低支援版本的平台,MySQL Shell 會捆綁 Python 3.10.8。
這適用於所有組建,但 Oracle Linux 7 除外,其會捆綁 Python 3.9.15
MySQL Shell 提供互動式程式碼執行模式,您可以在 MySQL Shell 提示符號中輸入程式碼,並且會處理每個輸入的陳述式,並將處理結果列印在螢幕上。如果使用的終端機支援,則支援 Unicode 文字輸入。支援彩色終端機。
可以使用命令撰寫多行程式碼,讓 MySQL Shell 快取多行,然後將其當做單一陳述式執行。如需更多資訊,請參閱多行支援。
除了互動式執行程式碼之外,MySQL Shell 也可以從不同的來源取得程式碼並加以處理。這種以非互動方式處理程式碼的方法稱為批次執行。
由於批次執行模式是為了單一語言的指令碼處理而設計,因此其限制為擁有最少的非格式化輸出,以及停用命令的執行。為了避免這些限制,請使用 --interactive
命令列選項,這會告知 MySQL Shell 將輸入當做互動式工作階段執行。在此模式中,輸入會逐行處理,就好像每一行都是在互動式工作階段中輸入的一樣。如需更多資訊,請參閱第 5.6 節:「批次程式碼執行」。
MySQL Shell 包含下列以 JavaScript 和 Python 實作的 API,您可以使用這些 API 開發與 MySQL 互動的程式碼。
-
AdminAPI 可讓您管理 MySQL 執行個體,使用這些執行個體來建立 InnoDB 叢集、InnoDB 叢集集和 InnoDB 複本集部署,以及整合 MySQL Router。
InnoDB 叢集提供整合式解決方案,可使用以 InnoDB 為基礎的 MySQL 資料庫來達成高可用性和可擴展性。InnoDB 叢集是使用群組複寫的替代解決方案,不需要進階的 MySQL 專業知識。請參閱第 7 章,MySQL InnoDB 叢集。
InnoDB 叢集集會連結主要 InnoDB 叢集及其在替代位置中的一或多個複本,以為 第 7 章,MySQL InnoDB 叢集 部署提供容錯移轉。請參閱第 8 章,MySQL InnoDB 叢集集。
InnoDB 複本集可讓您管理一組執行非同步 GTID 型複寫的 MySQL 執行個體。請參閱第 9 章,MySQL InnoDB 複本集。
AdminAPI 也提供設定 MySQL Router 使用者的操作,以盡可能簡化與 InnoDB 叢集、InnoDB 叢集集和 InnoDB 複本集的整合。如需 AdminAPI 的更多資訊,請參閱第 6 章,MySQL AdminAPI。
當 MySQL Shell 使用 X Protocol 連線到 MySQL 伺服器時,X DevAPI 可讓開發人員使用關係和文件資料。如需更多資訊,請參閱使用 MySQL 作為文件儲存。如需關於 X DevAPI 概念和使用方式的文件,請參閱X DevAPI 使用者指南。
MySQL Shell 的設計目的是為所有支援 X Protocol 的 MySQL 產品提供整合式命令列用戶端。MySQL Shell 的開發功能是為使用 X Protocol 的工作階段設計。MySQL Shell 也可以使用傳統的 MySQL 通訊協定連線到不支援 X Protocol 的 MySQL 伺服器。X DevAPI 中的一組最少功能可用於使用傳統 MySQL 通訊協定建立的工作階段。
您可以使用報表和延伸物件的形式,定義 MySQL Shell 基本功能的延伸功能。可以使用 JavaScript 或 Python 建立報表和延伸物件,而且不論使用哪種作用中的 MySQL Shell 語言都可以使用。您可以將報表和延伸物件保存在外掛程式中,這些外掛程式會在 MySQL Shell 啟動時自動載入。MySQL Shell 有數個內建的報表可以使用。如需更多資訊,請參閱第 10 章,擴充 MySQL Shell。
MySQL Shell 包含下列用於使用 MySQL 的工具
升級檢查工具,可驗證 MySQL 伺服器執行個體是否已準備好升級。使用
util.checkForServerUpgrade()
來存取升級檢查工具。JSON 匯入工具,可將 JSON 文件匯入 MySQL 伺服器集合或資料表。使用
util.importJSON()
來存取匯入工具。平行資料表匯入工具,可分割單一資料檔案,並使用多個執行緒將區塊載入 MySQL 資料表。
如需更多資訊,請參閱第 11 章,MySQL Shell 工具。
MySQL Shell 使用 API 命令語法公開其大部分功能,讓您可以輕鬆地將 mysqlsh 與其他工具整合。例如,您可以使用此功能建立管理 InnoDB 叢集的 bash 指令碼。使用 mysqlsh
語法,將操作直接傳遞給 MySQL Shell 全域物件,略過 REPL 介面。請參閱第 5.8 節:「API 命令列整合」。[選項]
-- shell_object
object_method
[method_arguments]
MySQL Shell 可以表格、定位符號分隔或垂直格式,或以 JSON 輸出傳回結果。為了協助將 MySQL Shell 與外部工具整合,您可以從命令列啟動 MySQL Shell 時,啟用所有輸出的 JSON 包裝。如需更多資訊,請參閱第 5.7 節:「輸出格式」。
MySQL Shell 可以將有關執行處理的資訊記錄在您選擇的詳細程度。記錄資訊可以傳送至應用程式記錄檔、其他可檢視的目的地和主控台的任何組合。如需更多資訊,請參閱第 12 章,MySQL Shell 記錄和偵錯。
在 MySQL Shell 中,與 MySQL 伺服器實例的連線由會話物件處理。當您第一次連線到 MySQL 伺服器實例時(無論是在啟動 MySQL Shell 時或之後),都會建立一個名為 session
的 MySQL Shell 全域物件來表示此連線。此會話稱為全域會話,因為它可以在所有 MySQL Shell 執行模式中使用。在 SQL 模式下,全域會話用於執行語句;在 JavaScript 模式和 Python 模式下,則可透過名為 session
的物件取得。您可以使用 mysqlx
和 mysql
JavaScript 和 Python 模組中提供的函式來建立更多會話物件,並且您可以將其中一個會話物件設定為 session
全域物件,以便在任何模式中使用它。如需更多資訊,請參閱 第 4.2 節,「MySQL Shell 會話」。