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

PHP MySQL 連線:localhost vs 127.0.0.1 vs IP 深度差異解析

     編輯:MySQL 資料庫相關知識

PHP 連接 MySQL 時,localhost、127.0.0.1、本機 IP 觸發完全不同的連線協議、權限匹配、效能特性。本文深度解析三者本質差異、驗證方法、最佳實踐。

核心差異總覽

維度localhost127.0.0.1本機 IP (如 192.168.1.100)
協議Unix Socket (本地套接字)TCP/IP (回環介面)TCP/IP (網卡介面)
網路層繞過 TCP/IP 協議棧走 Loopback 介面走物理/虛擬網卡
權限匹配user@'localhost'user@'127.0.0.1'user@'192.168.1.100' 或 user@'%'
防火牆影響無受本地防火牆規則影響受網路/主機防火牆影響
效能最高 (無網路開銷)高 (內核級回環)標準網路延遲
PHP 常數MYSQL_HOST=localhost127.0.0.1具體 IP

MySQL 權限系統宿主匹配邏輯

-- 查看用戶宿主定義
SELECT User, Host FROM mysql.user;

-- 典型輸出
+------+-------------+
| User | Host        |
+------+-------------+
| root | localhost   |  -- 匹配 localhost 連線
| root | 127.0.0.1   |  -- 匹配 127.0.0.1 連線
| root | %           |  -- 匹配所有 IP (含本機 IP)
+------+-------------+

關鍵點: localhost 和 127.0.0.1 在權限表中是**不同的宿主值**,必須分別授權。

驗證連線協議 (MySQL 命令行)

# 1. localhost → Unix Socket
shell> mysql -h localhost -u root -p
mysql> STATUS;
Connection: Localhost via UNIX socket

# 2. 127.0.0.1 → TCP/IP
shell> mysql -h 127.0.0.1 -u root -p
mysql> STATUS;
Connection: 127.0.0.1 via TCP/IP

# 3. 本機 IP → TCP/IP
shell> mysql -h 192.168.1.100 -u root -p
mysql> STATUS;
Connection: 192.168.1.100 via TCP/IP

PHP 連線代碼對比

常見問題與解決

  1. localhost 連不上,127.0.0.1 能連
    • Socket 文件路徑不匹配:檢查 mysql.sock 位置,PHP pdo_mysql.default_socket、mysqli.default_socket 配置
    • MySQL 未啟用 Socket:skip-networking 導致只能 TCP,但 localhost 強制 Socket
    • 權限缺失:無 user@'localhost' 授權
  2. 127.0.0.1 連不上,localhost 能連
    • MySQL 綁定地址:bind-address=127.0.0.1 未配置或配置為 localhost
    • 防火牆阻擋 3306 端口
    • 權限缺失:無 user@'127.0.0.1' 授權
  3. 效能基準測試
    # 簡單基準:10000 次簡單查詢
    localhost (Socket):  ~0.8 秒
    127.0.0.1 (TCP):     ~1.2 秒
    差異 ~30-50% (視系統負載)

最佳實踐建議

  1. 同機部署:優先使用 localhost (Unix Socket),效能最高、繞過防火牆
  2. Docker/容器化:使用 127.0.0.1 或服務名 (DNS),Socket 需掛載共享卷
  3. 跨機部署:使用內網 IP 或域名,配置 bind-address=0.0.0.0、防火牆放行、權限 user@'%' 或具體 IP
  4. 統一配置管理:環境變數區分 DB_HOST、DB_SOCKET,避免硬編碼
  5. 權限最小化:僅授權必要宿主,避免 user@'%' 濫用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved