MySQL Shell 可以使用 X Protocol 和傳統 MySQL 通訊協定連線至 MySQL 伺服器。您可以使用下列方式,全域指定 MySQL Shell 連線的 MySQL 伺服器執行個體
當您啟動 MySQL Shell 時,使用命令參數。請參閱第 4.3.1 節「使用個別參數連線」。
當 MySQL Shell 正在執行時,使用
\connect
命令。請參閱第 3.1 節「MySQL Shell 命令」。instance
當在 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
命令並指定連線參數來建立新的連線。