4.2.5 连接传输协议
对于使用 MySQLClient 端库的程序(例如mysql和mysqldump),MySQL 支持基于多种传输协议的服务器连接:TCP/IP,Unix 套接字文件,命名管道和共享内存。本节介绍如何选择这些协议,以及它们如何相似和不同。
传输协议选择
对于给定的连接,如果未明确指定传输协议,则将隐式确定传输协议。例如,与localhost
的连接会导致在 Unix 和类似 Unix 的系统上构建套接字文件连接,否则会导致与127.0.0.1
的 TCP/IP 连接。有关更多信息,请参见第 4.2.4 节“使用命令选项连接到 MySQL 服务器”。
要明确指定协议,请使用--protocol命令选项。下 table 显示了--protocol的允许值,并指出了每个值的适用平台。这些值不区分大小写。
--protocol Value | 使用的传输协议 | Applicable Platforms |
---|---|---|
TCP | TCP/IP | All |
SOCKET | Unix 套接字文件 | Unix 和类 Unix 系统 |
PIPE | Named pipe | Windows |
MEMORY | Shared memory | Windows |
本地和远程连接的传输支持
TCP/IP 传输支持与本地或远程 MySQL 服务器的连接。
套接字文件,命名管道和共享内存传输仅支持与本地 MySQL 服务器的连接。 (命名管道传输的确允许远程连接,但此功能未在 MySQL 中实现.)
localhost 的解释
如果未明确指定传输协议,则localhost
解释如下:
-
在 Unix 和类似 Unix 的系统上,与
localhost
的连接将导致套接字文件连接。 -
否则,到
localhost
的连接将导致到127.0.0.1
的 TCP/IP 连接。
如果显式指定了传输协议,则相对于该协议解释localhost
。例如,对于--protocol=TCP,到localhost
的连接会导致在所有平台上到127.0.0.1
的 TCP/IP 连接。
加密和安全性 Feature
使用加密连接的命令选项中描述的选项,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 连接和命名管道连接不安全。
另请参见将加密连接配置为强制性。
Connection Compression
所有传输协议都必须在 Client 端和服务器之间的流量上使用压缩。如果压缩和加密都用于给定的连接,则压缩发生在加密之前。有关更多信息,请参见第 4.2.6 节“连接压缩控制”。