MySQL Shell 8.4  /  MySQL Shell 入門  /  MySQL Shell 連線

4.3 MySQL Shell 連線

MySQL Shell 可以使用 X Protocol 和傳統 MySQL 協議連線到 MySQL Server。您可以使用以下方式全域指定 MySQL Shell 連線的 MySQL 伺服器執行個體

這些連線到 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 指令並指定連線參數來建立新的連線。