连接传输协议

来自泡泡学习笔记
跳到导航 跳到搜索

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


传输协议选择

对于给定的连接,如果传输协议没有明确指定,则会隐式确定。例如,对localhost的连接在Unix和类Unix系统上会生成一个套接字文件连接,在其他情况下会生成对127.0.0.1的TCP/IP连接。


要显式指定协议,请使用--protocol命令选项。下表显示了--protocol的可接受值,并指示每个值适用的平台。这些值不区分大小写。

--protocol的值 使用的传输协议 适用的平台
TCP TCP/IP 所有平台
SOCKET Unix套接字文件 Unix和类Unix系统
PIPE 命名管道 Windows
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连接。


加密和安全特性

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连接和命名管道连接不安全。


另请参阅配置强制加密连接。


连接压缩

所有传输协议都可以在客户端和服务器之间的流量上使用压缩。如果对于给定的连接同时使用压缩和加密,则压缩会在加密之前进行。