6.2.7 连接传输协议
对于使用 MySQL 客户端库(例如mysql和mysqldump)的程序,MySQL 支持基于多种传输协议的连接:TCP/IP、Unix 套接字文件、命名管道和共享内存。这一节描述了如何选择这些协议,以及它们的相似之处和差异。
对于给定的连接,如果传输协议不指定,会隐式确定。例如,对于连接到localhost
,在 Unix 和 Unix 类系统上将建立套接字文件连接,在其他情况下将建立 TCP/IP 连接到127.0.0.1
。更多信息,请见Section 6.2.4,“使用命令选项连接到 MySQL 服务器”。
要指定传输协议,可以使用--protocol
命令选项。下表显示了--protocol
的可接受值,并且指明了每个值适用的平台。这些值不区分大小写。
--protocol Value |
Transport Protocol Used | Applicable Platforms |
---|---|---|
TCP |
TCP/IP | All |
SOCKET |
Unix 套接字文件 | Unix 和 Unix 类系统 |
PIPE |
命名管道 | Windows |
MEMORY |
共享内存 | Windows |
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 和 socket-file 传输协议都可以使用 TLS/SSL 加密,使用在 命令选项:加密连接 中描述的选项。named-pipe 和共享内存传输协议不支持 TLS/SSL 加密。
默认情况下,连接是安全的,如果使用了安全的传输协议。否则,对于支持 TLS/SSL 加密的协议,可以使用加密来使连接安全。
-
TCP/IP 连接默认情况下不安全,但可以加密以使其安全。
-
socket-file 连接默认情况下安全,也可以加密,但加密 socket-file 连接不会增加安全性,并且会增加 CPU 负载。
-
named-pipe 连接默认情况下不安全,也不能使用加密来使其安全。然而,系统变量
named_pipe_full_access_group
可以控制哪些 MySQL 用户可以使用 named-pipe 连接。 -
共享内存连接默认情况下安全。
如果启用了 require_secure_transport
系统变量,服务器将只允许使用安全传输协议的连接。根据前面的注释,使用 TCP/IP 加密的连接、使用 socket 文件或共享内存的连接都是安全连接。TCP/IP 连接不使用 TLS/SSL 加密和 named-pipe 连接不是安全的。
请参阅 配置加密连接为强制。
所有传输协议都可以使用客户端和服务器之间的流量压缩。如果同时使用压缩和加密,压缩将在加密之前发生。更多信息,请参阅 第6.2.8节,“连接压缩控制”。