对于使用 MySQL 客户端库的程序(例如 mysql和mysqldump),MySQL 支持基于多种传输协议连接到服务器:TCP/IP、Unix 套接字文件、命名管道和共享内存。本节介绍如何选择这些协议,以及它们之间的相似之处和不同之处。
对于给定的连接,如果未明确指定传输协议,则隐式确定。例如,localhost
在 Unix 和类 Unix 系统上,连接到 会导致套接字文件连接,否则会导致 TCP/IP 连接127.0.0.1
。有关更多信息,请参见第 6.2.4 节“使用命令选项连接到 MySQL 服务器”。
要明确指定协议,请使用 --protocol命令选项。下表显示了允许的值 --protocol并指示每个值的适用平台。这些值不区分大小写。
--protocol价值 | 使用的传输协议 | 适用平台 |
---|---|---|
TCP | TCP/IP | 全部 |
SOCKET | Unix 套接字文件 | Unix 和类 Unix 系统 |
PIPE | 命名管道 | 视窗 |
MEMORY | 共享内存 | 视窗 |
TCP/IP 传输支持与本地或远程 MySQL 服务器的连接。
套接字文件、命名管道和共享内存传输仅支持与本地 MySQL 服务器的连接。(命名管道传输允许远程连接,但 MySQL 中未实现此功能。)
如果未明确指定传输协议, localhost
则解释如下:
-
在 Unix 和类 Unix 系统上,连接会
localhost
导致套接字文件连接。 -
否则,与 的连接将
localhost
导致与 的 TCP/IP 连接127.0.0.1
。
如果明确指定了传输协议, localhost
则将根据该协议进行解释。例如,使用 ,则在所有平台上 --protocol=TCP连接 localhost
到 都会产生到 的 TCP/IP 连接 。127.0.0.1
TCP/IP 和套接字文件传输受 TLS/SSL 加密,使用 加密连接的命令选项中描述的选项。命名管道和共享内存传输不受 TLS/SSL 加密。
如果通过默认安全的传输协议建立连接,则默认情况下连接是安全的。否则,对于受 TLS/SSL 加密约束的协议,可以使用加密确保连接安全:
-
TCP/IP 连接默认情况下并不安全,但可以加密以确保安全。
-
套接字文件连接默认是安全的。它们也可以加密,但加密套接字文件连接并不会使其更安全,并且会增加 CPU 负载。
-
命名管道连接默认情况下不安全,并且不受加密保护。但是, named_pipe_full_access_group 可以使用系统变量来控制允许哪些 MySQL 用户使用命名管道连接。
-
共享内存连接默认是安全的。
如果require_secure_transport 启用了系统变量,服务器将仅允许使用某种形式的安全传输的连接。根据前面的说明,使用 TLS/SSL 加密的 TCP/IP、套接字文件或共享内存的连接是安全连接。未使用 TLS/SSL 加密的 TCP/IP 连接和命名管道连接不安全。
另请参阅将加密连接配置为强制性要求。
所有传输协议都受客户端和服务器之间流量压缩的影响。如果对给定连接同时使用压缩和加密,则压缩先于加密。有关更多信息,请参见 第 6.2.8 节“连接压缩控制”。