当使用MySQL客户端(例如mysql
)时,如何确定它是使用Unix套接字文件还是使用TCP / IP连接到服务器?
当使用MySQL客户端(例如mysql
)时,如何确定它是使用Unix套接字文件还是使用TCP / IP连接到服务器?
Answers:
尝试使用netstat -ln | grep 'mysql'
,您将看到输出如何将其连接。如果您有权使用Shell
在Unix上,MySQL程序特别对待主机名localhost,与其他基于网络的程序相比,它可能与您期望的不同。为了连接到本地主机,MySQL程序尝试使用Unix套接字文件连接到本地服务器。
即使给定了--port
或-P
选项来指定端口号,也会发生这种情况。
如果像yould从知道的连接类型中的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地址或名称。您还可以通过使用该--protocol=TCP
选项来显式指定连接协议,即使是本地主机也是如此。例如:
shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP
该--protocol={TCP|SOCKET|PIPE|MEMORY}
选项显式指定用于连接到服务器的协议。当其他连接参数通常会导致使用您想要的协议以外的协议时,这很有用。例如,默认情况下,使用Unix套接字文件在Unix上连接到本地主机:
shell> mysql --host=localhost
要强制使用TCP / IP连接,请指定一个--protocol
选项:
shell> mysql --host=localhost --protocol=TCP
Unix套接字文件连接的速度比TCP / IP快,但是只能在连接到同一台计算机上的服务器时使用。