MySQL Shell 8.4  /  ...  /  使用 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 伺服器執行個體,而且您需要關閉伺服器,則必須先關閉 MySQL Shell 工作階段。以這種方式仍連線的工作階段可能會導致伺服器在關閉程序期間停止回應。如果發生這種情況,請結束 MySQL Shell,伺服器將會繼續進行關閉程序。

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