首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

mysql.sock 作用詳解與連線故障排查

     編輯:MySQL 綜合教學

mysql.sock 作用詳解與連線故障排查

一、mysql.sock 是什麼?

mysql.sock 是 MySQL 在 Unix/Linux 系統上用於 本地 Socket 連線 的特殊文件。當客戶端與 Server 運行在同一台機器,且連線參數指定為 localhost 或留空 Host 時,MySQL 會優先嘗試透過 Unix Domain Socket(而非 TCP/IP)進行通訊,效能更高、延遲更低。

二、配置文件中的 socket 參數

編譯安裝 MySQL 時,會將範本配置複製到 /etc/my.cnf:

cp support-files/my-small.cnf /etc/my.cnf

查看 socket 路徑:

[mysqld]
socket = /tmp/mysql.sock
port = 3306
...

客戶端連線時可顯式指定:

mysql -u root -p -S /tmp/mysql.sock

三、兩種連線方式對比

方式適用場景特點
TCP/IP跨主機、容器、雲端需指定 IP:Port,通用性強
Unix Socket本機連線無網路開銷,速度更快;修改 port 不影響連線

因為 mysql.sock 隨 MySQL 啟動動態生成,修改 my.cnf 的 port 後重啟服務,socket 文件會自動更新,本地連線無需改動客戶端配置。

四、常見「找不到 mysql.sock」故障與解法

  1. 新安裝找不到:用 find / -name mysql.sock 定位實際路徑,連線時加 -S 指定。
  2. 誤刪 sock 文件:重啟 MySQL 服務,datadir 目錄下會自動重建。
  3. 權限問題:確認 socket 文件目錄擁有者為 mysql 進程用戶,且客戶端有讀寫權限。
  4. 多實例衝突:每個實例需在 my.cnf 指定不同 socket 路徑。

若持續無法解決,可強制使用 TCP 連線:mysql -h 127.0.0.1 -P 3306(注意用 127.0.0.1 而非 localhost)。

五、Windows 下的替代方案

Windows 不支援 Unix Socket,但提供 Named Pipe(命名管道) 與 Shared Memory 兩種本地高效通訊方式,需在 my.ini 啟用 enable-named-pipe 或 shared-memory。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved