客户端到mysqld的连接层通过多种通信协议:
TCP/IP
UNIX 套接字
共享内存
命名管道
其中TCP/IP 适用于整个网络。其它3种链接方式仅支持本地连接,也据是客户机和服务器在同一台计算机上运行时。每个连接对应一个线程。此线程处理查询执行。在某个连接可以开始发送 SQL 查询之前,将会通过验证用户名 + 口令 + 客户机主机来对该连接进行验证。
通信协议一览表
协议 连接类型 支持的操作系统
TCP/IP 本地、远程 所有
UNIX套接字文件 仅本地 UNIX/LINUX
共享内存 仅本地 仅 Windows
命名管道 仅本地 仅 Windows
TCP/IP(传输控制协议/Internet 协议,Transmission Control Protocol/Internet Protocol):该通信协议套件用于连接 Internet 上的主机。这是适用于 Windows 的最佳连接类型。
UNIX 套接字:一种进程间通信形式,用于在同一台计算机上的进程之间形成双向通信链路的一端。套接字需要本地系统上的物理文件。这是适用于 Linux 的最佳连接类型。
共享内存:一种在程序之间传递数据的有效方式。一个程序创建其他进程(如果允许)可以访问的内存部分。默认情况下,共享内存处于禁用状态。要启用共享内存连接,必须使用–shared-memory 选项启动服务器。
命名管道:命名管道的使用偏向于客户机/服务器通信,其工作方式与套接字非常相似。命名管道支持读/写操作,以及服务器应用程序的显式“被动”模式。此协议仅适用于单台 (Windows) 计算机。默认情况下,命名管道处于禁用状态。要启用命名管道连接,必须使用 --enable-named-pipe 选项启动服务器。