首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Socket 檔案作用詳解:多實例快速連線、免密登入與監控整合

     編輯:MySQL 資料庫相關知識

MySQL Socket(Unix Domain Socket)是本機進程間通訊的特殊檔案,比 TCP/IP 回環更高效。正確配置 Socket 路徑是多實例管理、免密登入、監控採集的關鍵。

1. Socket 基礎配置

my.cnf 中 [mysqld] 區段指定:

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

2. 多實例場景:Socket 隔離與快速連線

同一主機跑兩個實例:

  • 實例 A:Port 3306,Socket /tmp/mysql3306.sock
  • 實例 B:Port 3307,Socket /tmp/mysql3307.sock

連線指令對比

# 指定 Socket(推薦,無需記住 Port)
mysql -uroot -p --socket=/tmp/mysql3307.sock
# 等價於 -S 縮寫
mysql -uroot -p -S /tmp/mysql3307.sock

# 傳統指定 Port
mysql -uroot -p --port=3307 --host=127.0.0.1
# 注意:-h localhost 會走 Socket,必須用 127.0.0.1 強制 TCP

3. 免密登入(本機信任)

本機 Socket 連線時,MySQL 允許 無密碼登入(預設 auth_socket 外掛或 skip-grant-tables 模式):

mysql -S /tmp/mysql3307.sock
# 直接進入 Shell,無需 -p

4. 監控系統整合

Zabbix、Prometheus MySQL Exporter、Percona Monitoring 等均支援 Socket 連線採集,配置範例:

# Zabbix agent 設定
UserParameter=mysql.ping[*],mysqladmin -S /tmp/mysql3306.sock ping
UserParameter=mysql.status[*],mysql -S /tmp/mysql3306.sock -e "SHOW GLOBAL STATUS"

5. 常見坑點

  • Socket 檔案屬於 mysql:mysql,權限 srwxrwxrwx,刪除後服務重啟自動重建
  • mysql.sock vs mysql.sock.lock:前者為通訊端,後者為鎖檔,勿混淆
  • Docker 容器掛載 Socket 需映射宿主機目錄(-v /var/run/mysqld:/var/run/mysqld)
  • TCP/IP 回環效能較 Socket 低 10-20%,本機高頻連線優先用 Socket

善用 Socket,多實例管理更清晰,監控採集更輕量,本機連線更極速。

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