4.2.5 连接传输协议

对于使用 MySQLClient 端库的程序(例如mysqlmysqldump),MySQL 支持基于多种传输协议的服务器连接:TCP/IP,Unix 套接字文件,命名管道和共享内存。本节介绍如何选择这些协议,以及它们如何相似和不同。

传输协议选择

对于给定的连接,如果未明确指定传输协议,则将隐式确定传输协议。例如,与localhost的连接会导致在 Unix 和类似 Unix 的系统上构建套接字文件连接,否则会导致与127.0.0.1的 TCP/IP 连接。有关更多信息,请参见第 4.2.4 节“使用命令选项连接到 MySQL 服务器”

要明确指定协议,请使用--protocol命令选项。下 table 显示了--protocol的允许值,并指出了每个值的适用平台。这些值不区分大小写。

--protocol Value使用的传输协议Applicable Platforms
TCPTCP/IPAll
SOCKETUnix 套接字文件Unix 和类 Unix 系统
PIPENamed pipeWindows
MEMORYShared memoryWindows

本地和远程连接的传输支持

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 节“连接压缩控制”