MySQL Shell 9.0  /  ...  /  使用 Unix Socket 和 Windows 具名管道連線

4.3.3 使用 Unix Socket 和 Windows 具名管道連線

在 Unix 上,當符合下列條件時,MySQL Shell 連線預設使用 Unix Socket

  • 未指定 TCP 連接埠。

  • 未指定主機名稱,或主機名稱等於 localhost

  • 指定了 --socket-S 選項,無論有無指定 Socket 檔案的路徑。

如果您指定 --socket 時未帶值且沒有等號,或 -S 時未帶值,則會使用該協定的預設 Unix Socket 檔案。如果您指定了替代 Unix Socket 檔案的路徑,則會使用該 Socket 檔案。

如果指定了主機名稱,但不是 localhost,則會改為建立 TCP 連線。在這種情況下,如果未指定 TCP 連接埠,則會使用預設值 3306。

在 Windows 上,對於使用傳統 MySQL 通訊協定的 MySQL Shell 連線,如果您將主機名稱指定為句點 (.),則 MySQL Shell 會使用具名管道連線。

  • 如果您使用類似 URI 的連線字串連線,請指定 user@.

  • 如果您使用鍵值對連線,請指定 {"host": "."}

  • 如果您使用個別參數連線,請指定 --host=.-h .

預設情況下,會使用管道名稱 MySQL。您可以使用 --socket 選項或作為類似 URI 的連線字串的一部分來指定替代的具名管道。

在類似 URI 的字串中,Unix Socket 檔案或 Windows 具名管道的路徑必須進行編碼,方法是使用百分比編碼或用括號括住路徑。括號消除了對像是 / 目錄分隔符號之類字元進行百分比編碼的需求。如果 Unix Socket 檔案的路徑以查詢字串的形式包含在類似 URI 的字串中,則開頭的斜線必須進行百分比編碼,但如果它取代了主機名稱,則開頭的斜線不得進行百分比編碼,如下列範例所示

mysql-js> \connect user@localhost?socket=%2Ftmp%2Fmysql.sock
mysql-js> \connect user@localhost?socket=(/tmp/mysql.sock)
mysql-js> \connect user@/tmp%2Fmysql.sock 
mysql-js> \connect user@(/tmp/mysql.sock)

僅在 Windows 上,具名管道必須在前面加上字元 \\.\,並使用百分比編碼或用括號括住,如下列範例所示

(\\.\named:pipe)
\\.\named%3Apipe
重要

在 Windows 上,如果一個或多個 MySQL Shell 工作階段使用具名管道連線至 MySQL Server 執行個體,並且您需要關閉伺服器,則必須先關閉 MySQL Shell 工作階段。仍以這種方式連線的工作階段可能會導致伺服器在關閉程序期間停止回應。如果發生這種情況,請結束 MySQL Shell,伺服器將繼續執行關閉程序。

如需有關使用 Unix Socket 檔案和 Windows 具名管道連線的詳細資訊,請參閱使用命令選項連線至 MySQL 伺服器使用類似 URI 的字串或鍵值對連線至伺服器