對於使用 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 節,「連線壓縮控制」。