对于使用MySQL客户端库的程序(例如 mysql和mysqldump),MySQL支持基于多种传输协议的服务器连接:TCP / IP,Unix套接字文件,命名管道和共享内存。本节介绍如何选择这些协议,以及它们如何相似和不同。
传输协议选择
对于给定的连接,如果未明确指定传输协议,则将隐式确定传输协议。例如,用于localhost
在Unix和类似Unix的系统上进行套接字文件连接的连接,127.0.0.1
否则进行TCP / IP连接。有关更多信息,请参见第4.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
导致在127.0.0.1
所有平台上的TCP / IP连接 。
加密和安全特性
使用“加密连接的命令选项”中所述的选项, 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连接和命名管道连接不安全。
另请参阅将加密连接配置为强制性。
连接压缩
所有传输协议都必须在客户端和服务器之间的流量上使用压缩。如果压缩和加密都用于给定的连接,则压缩发生在加密之前。有关更多信息,请参见 第4.2.8节“连接压缩控制”。