Linux下 MySQL sock連線和TCP連線
阿新 • • 發佈:2019-02-15
這兩天開始自學PHP,連線資料庫的時候發現自己用localhost一直連線失敗,半天也找不出自己程式碼的錯誤;
抱著隨便試試的心態就把localhost改成了127.0.0.1,結果竟然連線成功了。
很好奇為什麼會這樣,就自己去百度了下,特在此記錄下。
原來
Linux下使用localhost
預設是使用sock連線, 127.0.0.1
則是使用tcp來連線
php.ini下有這樣一個配置項:
mysql.default_socket =
試著改成對應的mysqld.sock檔案,如:
mysql.default_socket = /var/run/mysqld/mysqld.sock
PS:可以使用ps -ef|grep mysql.sock|grep -v "grep"命令查詢mysql.sock檔案的位置)
這樣就能使用localhost進行sock連線了。
mysql.sock的作用是server和client在同一臺伺服器,並且使用localhost進行連結的時候,就會使用socket來進行連線——僅此而已
也就是:為主機名為localhost建立的MySQL連線,該連線過程通過一個套接字檔案mysql.socket實現的。所以該檔案被刪後,用localhost使用者是連線不到MySQL伺服器的
必須建立一條tcp/ip連線,即使用127.0.0.1而不是localhost作為-h的引數去連線MySQL伺服器,如:mysqladmin -h 127.0.0.1 -u root -p shutdown,強制地建立一條tcp/ip連線,關閉MySQL伺服器,再重新以localhost為主機名啟動MySQL伺服器,它就會重新建立一個套接字檔案。