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

PHP MySQL 連接宿主差異深度解析:localhost vs 127.0.0.1 vs IP 的協議與權限本質

     編輯:MySQL 綜合教學

一家之言:本質區別

維度localhost127.0.0.1
正確語義本地服務器本機地址(本機服務器)
網絡路徑**不經網卡**,本地文件域套接字**經網卡回環**,TCP/IP 協議棧
防火牆影響不受網絡防火牆限制受防火牆/網卡相關限制
資源佔用不佔用網絡資源佔用網絡棧資源
權限模型當前用戶本地權限網絡用戶權限(可能不同)

建議:本地服務配置優先用 localhost,避免網絡層干擾。

他家之言:MySQL 協議層面差異

  1. mysql -h 127.0.0.1 → **TCP/IP 連接**,服務器認為來源為 127.0.0.1 或 localhost.localdomain
  2. mysql -h localhost → **Unix Socket 連接**,服務器認為來源為 localhost
  3. MySQL 權限表中 Host='localhost' 有特殊含義:表示本地 Socket 連接

權限匹配實證

權限表順序決定匹配優先級:

-- 記錄 1
Host: localhost    User: root  -- 優先匹配

-- 記錄 2  
Host: 127.0.0.1    User: root

當 localhost 解析為 127.0.0.1 時,兩種連接方式均優先匹配第 1 條記錄。

實測驗證

shell> mysql -h 127.0.0.1
mysql> status;
Connection: 127.0.0.1 via TCP/IP
Current user: root@127.0.0.1

shell> mysql -h localhost
mysql> status;
Connection: Localhost via UNIX socket
Current user: root@localhost

shell> mysql -h 真實IP
mysql> status;
Connection: 真實IP via TCP/IP
Current user: root@真實IP

核心結論

  • 協議不同:Socket vs TCP/IP
  • 權限主體不同:root@localhost vs root@127.0.0.1 vs root@IP
  • 權限表需分別授權:三種 Host 值需各自 GRANT,或使用通配符 %
  • 性能差異:本機高頻連接 Socket 略優於 TCP
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved