Mysql
如何確定 MySQL 客戶端使用的連接方法?
當使用 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 快,但只能在連接到同一台電腦上的伺服器時使用。