MySQL Shell 9.0  /  MySQL Shell 入門  /  MySQL Shell 連線

4.3 MySQL Shell 連線

MySQL Shell 可以使用 X Protocol 和傳統 MySQL 通訊協定連線至 MySQL 伺服器。您可以使用下列方式,全域指定 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 命令並指定連線參數來建立新的連線。