MySQL Shell 可讓您使用各種 API,並支援指定連線,如使用類似 URI 字串或鍵值組連線至伺服器中所述。您可以使用類似 URI 的字串或鍵值組來指定連線。額外的連線參數在 AdminAPI 中不支援。本文件示範使用類似 URI 連線字串的 AdminAPI。
對於 AdminAPI 操作,您只能使用 TCP/IP 連線和傳統 MySQL 通訊協定連接至 InnoDB Cluster 中的伺服器實例。AdminAPI 操作不支援使用 Unix Socket 和具名管道,AdminAPI 操作也不支援使用 X 通訊協定。相同的限制也適用於伺服器實例之間的連線。
用戶端應用程式可以使用 X 通訊協定和 Unix Socket 以及具名管道來連線至 InnoDB Cluster 中的實例。限制僅適用於使用 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 Cluster,否則此行為沒有任何影響。在這種情況下,兩個實例之間的負載平衡無法正確管理,而且永遠使用相同的實例。若要避免這種副作用,您可以新增 --mc
或 --mysql
選項,明確指定傳統 MySQL 通訊協定工作階段。
某些開啟許多伺服器連線的操作,當一個或多個伺服器確實無法連線時,可能需要很長時間才能執行,例如 cluster.status()
命令。連線逾時可能無法提供足夠的時間來回應。
您可以使用 MySQL Shell 設定選項 dba.connectTimeout
,以秒為單位設定任何使用 AdminAPI 之工作階段的預設連線逾時。