寻找交通工具

寻找交通工具

当使用MySQL客户端(例如mysql)时,我如何确定它是使用Unix套接字文件还是使用TCP/IP连接到服务器?

答案1

寻找交通工具

尝试使用netstat -ln | grep 'mysql',您可以看到它是如何通过输出连接的。如果您有权访问 shell

在 Unix 上,MySQL 程序特别对待主机名 localhost,与其他基于网络的程序相比,其方式可能与您期望的不同。对于到本地主机的连接,MySQL 程序尝试使用 Unix 套接字文件连接到本地服务器。

即使给出了--port-P选项来指定端口号,也会发生这种情况。

如果您想了解连接类型之内在 mysql CLI 中,使用“\s”(状态)命令。

mysql> \s

输出将包含类似于以下内容之一的行(在 Unix 上)。

Connection:             127.0.0.1 via TCP/IP

或者

Connection:             Localhost via UNIX socket

强制特定的传输

要确保客户端与本地服务器建立 TCP/IP 连接,请使用--host-h指定主机名值 127.0.0.1,或者本地服务器的 IP 地址或名称。您还可以使用 选项显式指定连接协议,甚至对于 localhost 也是如此--protocol=TCP。例如:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

--protocol={TCP|SOCKET|PIPE|MEMORY}选项显式指定用于连接到服务器的协议。当其他连接参数通常会导致使用与您想要的协议不同的协议时,它很有用。例如,默认情况下,Unix 上到 localhost 的连接是使用 Unix 套接字文件建立的:

shell> mysql --host=localhost

要强制使用 TCP/IP 连接,请指定一个--protocol选项:

shell> mysql --host=localhost --protocol=TCP

协议类型:

  • TCP:与本地或远程服务器的 TCP/IP 连接。适用于所有平台。
  • SOCKET:与本地服务器的 Unix 套接字文件连接。仅适用于 UNIX。
  • PIPE:与本地或远程服务器的命名管道连接。仅适用于 Windows。
  • MEMORY:与本地服务器的共享内存连接。仅适用于 Windows。

Unix 套接字文件连接比 TCP/IP 更快,但只能在连接到同一台计算机上的服务器时使用。

相关内容