MySQL Shell 可以使用 X Protocol 和傳統 MySQL 協議連線到 MySQL Server。您可以使用以下方式全域指定 MySQL Shell 連線的 MySQL 伺服器執行個體
當您啟動 MySQL Shell 時,使用指令參數。請參閱第 4.3.1 節,「使用個別參數連線」。
當 MySQL Shell 執行時,使用
\connect
指令。請參閱第 3.1 節,「MySQL Shell 指令」。執行個體
在 Python 或 JavaScript 模式中執行時,使用
shell.connect()
方法。
這些連線到 MySQL 伺服器執行個體的方法會建立全域會話,這是一個可以在所有 MySQL Shell 執行模式(SQL 模式、JavaScript 模式和 Python 模式)中使用的連線。名為 session
的 MySQL Shell 全域物件代表此連線,而變數 session
會保留對它的參考。您也可以使用 shell.openSession()
、mysqlx.getSession()
、mysql.getSession()
或 mysql.getClassicSession()
函式來建立代表其他 MySQL 伺服器執行個體連線的多個其他會話物件。這些連線可以在您建立它們的模式中使用,而且一次只能將其中一個指定為 MySQL Shell 的全域會話,以便在所有模式中使用。如需會話物件、如何操作全域會話以及如何從 MySQL Shell 執行個體建立和管理多個連線的說明,請參閱第 4.2 節,「MySQL Shell 會話」。
所有這些不同的連線到 MySQL 伺服器執行個體的方式都支援以下列方式指定連線
以 URI 樣式字串指定的參數會使用類似
myuser@example.com:3306/main-schema
的語法。如需完整語法,請參閱使用 URI 樣式連線字串連線。以鍵值組指定的參數會使用類似
{user:'myuser', host:'example.com', port:3306, schema:'main-schema'}
的語法。這些鍵值組會以實作的語言原生建構提供。例如,您可以使用鍵值組以 JavaScript 中的 JSON 物件或 Python 中的字典提供連線參數。如需完整語法,請參閱使用鍵值組連線。
如需詳細資訊,請參閱使用 URI 樣式字串或鍵值組連線至伺服器。
無論您選擇如何連線,重要的是要了解 MySQL Shell 如何處理密碼。預設情況下,會假定連線需要密碼。密碼(最大長度為 128 個字元)會在登入提示字元中要求,而且可以使用第 4.4 節,「可插拔密碼儲存」來儲存。如果指定的使用者具有無密碼帳戶(不安全且不建議),或如果正在使用 Socket 對等認證(例如,使用 Unix Socket 連線時),您必須明確指定不提供密碼且不需要密碼提示。若要執行此操作,請使用下列其中一種方法
如果您使用 URI 樣式連線字串連線,請在字串中的
user
後面放置一個:
,但不要在其後指定密碼。如果您使用鍵值組連線,請在使用
password
金鑰後使用''
提供空字串。如果您使用個別參數連線,請指定
--no-password
選項,或指定具有空值的--password=
選項。
如果您沒有指定連線的參數,則會使用下列預設值
user
預設為目前的系統使用者名稱。host
預設為localhost
。port
在使用 X Protocol 連線時預設為 X Plugin 連接埠 33060,在使用傳統 MySQL 協議連線時則預設為連接埠 3306。
若要組態連線逾時,請使用 connect-timeout
連線參數。connect-timeout
的值必須是非負整數,定義以毫秒為單位的時間範圍。逾時預設值為 10000 毫秒或 10 秒。例如
// Decrease the timeout to 2 seconds.
mysql-js> \connect user@example.com?connect-timeout=2000
// Increase the timeout to 20 seconds
mysql-js> \connect user@example.com?connect-timeout=20000
若要停用逾時,請將 connect-timeout
的值設定為 0,這表示用戶端會等到基礎 Socket 逾時(這取決於平台)。
當一個或多個伺服器無法連線時,某些開啟許多伺服器連線的操作可能需要很長時間才能執行,例如,shell.connect()
指令。連線逾時可能沒有提供足夠的時間進行回應。
您可以使用 MySQL Shell 組態選項 connectTimeout
來設定任何未使用 AdminAPI 的會話的預設連線逾時。
您可以使用 Unix Socket 檔案或 Windows 具名管道連線,而不是 TCP 連線。如需指示,請參閱第 4.3.3 節,「使用 Unix Socket 和 Windows 具名管道連線」。
如果 MySQL 伺服器執行個體支援加密連線,您可以啟用並組態連線以使用加密。如需指示,請參閱第 4.3.4 節,「使用加密連線」。
傳統 MySQL 協議連線支援使用 LDAP 和 Kerberos 驗證。如需使用這些驗證的指示,請參閱第 4.3.5 節,「使用 LDAP 和 Kerberos 驗證」。
MySQL Shell 支援 SSH 通道,以連線到 MySQL 伺服器執行個體。如需指示,請參閱第 4.3.6 節,「使用 SSH 通道」。
您也可以要求連線對在 MySQL Shell 和 MySQL 伺服器執行個體之間傳送的所有資料使用壓縮。如需指示,請參閱第 4.3.7 節,「使用壓縮連線」。
如果伺服器的連線中斷,您可以使用 \reconnect
指令,讓 MySQL Shell 使用現有的連線參數嘗試多次重新連線目前的全域會話。\reconnect
指令會指定,而且不帶任何參數或選項。如果這些嘗試不成功,您可以使用 \connect
指令並指定連線參數來建立新的連線。