對於使用 MySQL 用戶端程式庫的程式(例如,mysql 和 mysqldump),MySQL 支援基於數種傳輸協定的伺服器連線:TCP/IP、Unix socket 檔案、具名管道和共享記憶體。本節說明如何選取這些協定,以及它們的相似之處和不同之處。
對於給定的連線,如果未明確指定傳輸協定,則會隱含地確定它。例如,連線至 localhost
會在 Unix 和類 Unix 系統上產生 socket 檔案連線,否則會產生連線至 127.0.0.1
的 TCP/IP 連線。如需其他資訊,請參閱第 6.2.4 節「使用命令選項連線至 MySQL 伺服器」。
若要明確指定協定,請使用 --protocol
命令選項。下表顯示 --protocol
的允許值,並指出每個值適用的平台。這些值不區分大小寫。
--protocol 值 |
使用的傳輸協定 | 適用的平台 |
---|---|---|
TCP |
TCP/IP | 全部 |
SOCKET |
Unix socket 檔案 | Unix 和類 Unix 系統 |
PIPE |
具名管道 | Windows |
MEMORY |
共享記憶體 | Windows |
TCP/IP 傳輸支援連線至本機或遠端 MySQL 伺服器。
Socket 檔案、具名管道和共享記憶體傳輸僅支援連線至本機 MySQL 伺服器。(具名管道傳輸確實允許遠端連線,但此功能未在 MySQL 中實作。)
如果未明確指定傳輸協定,則 localhost
的解讀如下
在 Unix 和類 Unix 系統上,連線至
localhost
會產生 socket 檔案連線。否則,連線至
localhost
會產生連線至127.0.0.1
的 TCP/IP 連線。
如果明確指定傳輸協定,則會根據該協定解讀 localhost
。例如,使用 --protocol=TCP
,連線至 localhost
會在所有平台上產生連線至 127.0.0.1
的 TCP/IP 連線。
TCP/IP 和 socket 檔案傳輸會使用加密連線的命令選項中說明的選項,受 TLS/SSL 加密影響。具名管道和共享記憶體傳輸不受 TLS/SSL 加密影響。
如果連線是透過預設安全的傳輸協定建立的,則連線預設為安全。否則,對於受 TLS/SSL 加密影響的協定,可以使用加密使連線安全
TCP/IP 連線預設不安全,但可以加密以使其安全。
Socket 檔案連線預設為安全。它們也可以加密,但加密 socket 檔案連線並不會使其更安全,反而會增加 CPU 負載。
具名管道連線預設不安全,且不受加密影響使其安全。不過,可以使用
named_pipe_full_access_group
系統變數來控制允許哪些 MySQL 使用者使用具名管道連線。共享記憶體連線預設為安全。
如果已啟用 require_secure_transport
系統變數,則伺服器僅允許使用某種形式安全傳輸的連線。根據先前的說明,使用 TLS/SSL 加密的 TCP/IP、socket 檔案或共享記憶體的連線是安全連線。未使用 TLS/SSL 加密的 TCP/IP 連線和具名管道連線是不安全的。
另請參閱設定強制加密連線。
所有傳輸協定都會受到用戶端和伺服器之間流量壓縮的使用影響。如果給定連線同時使用壓縮和加密,則壓縮會先於加密發生。如需更多資訊,請參閱第 6.2.8 節「連線壓縮控制」。