MySQL Shell 8.4  /  ...  /  連接伺服器實例

6.2.2 連接伺服器實例

MySQL Shell 可讓您使用各種 API,並支援指定連線,如使用類似 URI 字串或鍵值對連線至伺服器中所述。您可以使用類似 URI 字串或鍵值對來指定連線。AdminAPI 不支援其他連線參數。本文件將示範如何使用類似 URI 的連線字串來使用 AdminAPI。

對於 AdminAPI 操作,您只能使用 TCP/IP 連線和傳統 MySQL 通訊協定來連線至 InnoDB 叢集中的伺服器實例。AdminAPI 操作不支援使用 Unix Socket 和具名管道,AdminAPI 操作也不支援使用 X 通訊協定。伺服器實例之間的連線也適用相同的限制。

注意

用戶端應用程式可以使用 X 通訊協定以及 Unix Socket 和具名管道來連線至 InnoDB 叢集中的實例。這些限制僅適用於使用 AdminAPI 命令的管理操作以及實例之間的連線。

例如,若要以使用者 myuser 的身分連線至位於 www.example.com 上、連接埠為 3306 的 MySQL 伺服器實例,請使用連線字串

myuser@www.example.com:3306

若要將此連線字串與 AdminAPI 操作 (例如 dba.configureInstance()) 搭配使用,您需要確保連線字串被解譯為字串。例如,將連線字串以單引號 (') 或雙引號 (") 括起來。

如果您使用的是 AdminAPI 的 JavaScript 實作,請發出

mysql-js> > dba.configureInstance('myuser@www.example.com:3306')

如果您使用的是 AdminAPI 的 Python 實作,請發出

mysql-py> dba.configure_instance('myuser@www.example.com:3306')

如果您在預設的互動模式下執行 MySQL Shell,系統會提示您輸入密碼。AdminAPI 支援 MySQL Shell 的第 4.4 節,「可插入的密碼儲存區」,一旦您儲存用於連線至實例的密碼,系統就不會再提示您輸入密碼。

MySQL Shell 預設會嘗試使用 X 通訊協定來連線至伺服器實例。如果您在進行 AdminAPI 操作的連線時未指定連線類型,MySQL Shell 的自動通訊協定偵測會在建立傳統 MySQL 通訊協定工作階段之前,先短暫建立 X 通訊協定的工作階段。

除非您使用 MySQL Router 管理的連接埠連線至只有兩個次要 (唯讀) 實例的 InnoDB 叢集,否則此行為不會產生任何影響。在這種情況下,兩個實例之間的負載平衡無法正確管理,而且始終使用相同的實例。若要避免此副作用,您可以新增 --mc--mysql 選項,明確指定傳統 MySQL 通訊協定工作階段。

當一個或多個伺服器確實無法連線時,某些開啟許多伺服器連線的操作可能需要很長時間才能執行,例如 cluster.status() 命令。連線逾時可能無法提供足夠的時間來取得回應。

您可以使用 MySQL Shell 組態選項 dba.connectTimeout,以秒為單位設定使用 AdminAPI 之任何工作階段的預設連線逾時。