对于使用 MySQL 客户端库的程序(例如,mysql 和 mysqldump),MySQL 支持基于几种传输协议的服务器连接:TCP/IP、Unix 套接字文件、命名管道和共享内存。本节介绍如何选择这些协议,以及它们之间的异同。
对于给定的连接,如果传输协议未明确指定,则隐式确定。例如,对 localhost
的连接在 Unix 和类 Unix 系统上会产生套接字文件连接,而在其他系统上会产生到 127.0.0.1
的 TCP/IP 连接。有关更多信息,请参阅 第 6.2.4 节,“使用命令选项连接到 MySQL 服务器”。
要明确指定协议,请使用 --protocol
命令选项。下表显示了 --protocol
的允许值,并指示了每个值适用的平台。这些值不区分大小写。
--protocol 值 |
使用的传输协议 | 适用的平台 |
---|---|---|
TCP |
TCP/IP | 所有平台 |
SOCKET |
Unix 套接字文件 | Unix 和类 Unix 系统 |
PIPE |
命名管道 | Windows |
MEMORY |
共享内存 | Windows |
TCP/IP 传输支持连接到本地或远程 MySQL 服务器。
套接字文件、命名管道和共享内存传输仅支持连接到本地 MySQL 服务器。(命名管道传输允许远程连接,但此功能在 MySQL 中未实现。)
如果传输协议未明确指定,则 localhost
的解释如下
在 Unix 和类 Unix 系统上,对
localhost
的连接会产生套接字文件连接。否则,对
localhost
的连接会产生到127.0.0.1
的 TCP/IP 连接。
如果传输协议明确指定,则 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 连接和命名管道连接不安全。
另请参阅 将加密连接配置为强制性。
所有传输协议都受到在客户端和服务器之间进行流量压缩的限制。如果对给定连接同时使用压缩和加密,则压缩将在加密之前进行。有关更多信息,请参阅 第 6.2.8 节,“连接压缩控制”。