Mysql

如何確定 MySQL 客戶端使用的連接方法?

  • February 20, 2012

當使用 MySQL 客戶端(例如mysql)時,我如何確定它是使用 Unix 套接字文件還是使用 TCP/IP 連接到伺服器?

尋找交通工具

嘗試使用netstat -ln | grep 'mysql',您可以看到它是如何通過輸出連接的。如果您有權訪問 shell

在 Unix 上,MySQL 程序對主機名 localhost 進行了特殊處理,與其他基於網路的程序相比,這種方式可能與您所期望的不同。對於到 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 地址或名稱。--protocol=TCP您還可以使用該選項顯式指定連接協議,即使對於 localhost 也是如此。例如:

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 快,但只能在連接到同一台電腦上的伺服器時使用。

引用自:https://unix.stackexchange.com/questions/32134