可能有很多朋友都會碰到一個問題不知道127.0.0.1與localhost有什么區別,但是有的時間會發現使用localhost連接不了,但是改成127.0.0.1即可了連接了,那么他們會有什么區別呢,下面我給大家介紹.
1. mysql -h 127.0.0.1 的時候,使用TCP/IP連接,mysql server 認為該連接來自于127.0.0.1或者是"localhost.localdomain"
2. mysql -h localhost 的時候,是不使用TCP/IP連接的,而使用Unix socket,此時,mysql server則認為該client是來自"localhost".
3. mysql權限管理中的"localhost"有特定含義:
注意:雖然兩者連接方式有區別,但當localhost 為默認的127.0.0.1時,兩種連接方式使用的權限記錄都是以下的1.row的記錄,因為記錄在前,先被匹配,代碼如下:
- *************************** 1. row ***************************
- Host: localhost
- User: root
- ......
- *************************** 2. row ***************************
- Host: 127.0.0.1
- User: root
證明,代碼如下:
- shell> mysql -h 127.0.0.1
- mysql> status;
- Current user: root@localhost
- SSL: Not in use
- Current pager: stdout
- Using outfile: ''
- Using delimiter: ;
- Server version: 5.1.33-log Source distribution
- Protocol version: 10
- Connection: 127.0.0.1 via TCP/IP
- shell> mysql -h locahostmysql> status;
- Current user: root@localhost
- SSL: Not in use
- Current pager: stdout
- Using outfile: ''
- Using delimiter: ;
- Server version: 5.1.33-log Source distribution
- Protocol version: 10 --Vevb.com
- Connection: Localhost via UNIX socket
發現問題,昨天在幫同事編譯安裝Linux環境時,遇到一個問題,WEB服務器是apache,數據庫是MySQL.
于是寫了一個測試連接數據庫的PHP頁面,代碼如下:
$mysql = mysql_connect('localhost','root','');
打開 http://localhost/test.php 測試.
提示:Can’t connect to local MySQL server through socket...
檢查環境正常,以為是數據庫沒有啟動,于是查看一下進程,MySQL在進程里,重啟了一下MySQL.使用mysql -u root -p 可以進入MySQL操作界面,直接使用/usr/local/php5/bin/php /web/test.php執行可以連上數據庫
apache也重啟了,一樣無效.
疑點:為何網頁執行失敗,命令執行卻成功,這下就郁悶了,使用php命令直接執行就成功,通過網頁執行就失敗,難道是apache導致?網上搜索了大堆資料也沒找到解決方案,重新編譯安裝apache問題依舊.
把localhost改成127.0.0.1成功.
把localhost改成127.0.0.1后竟然連接成功了,開始陷入思考困局:localhost失敗127.0.0.1卻成功?
ping localhost 地址是127.0.0.1沒錯.
打開hosts加入:127.0.0.1 qttc
使用qttc當主機連接也正常,唯獨就不認localhost.
localhost連接方式不同導致,為了了解PHP連接數據庫時,主機填寫localhost與其它的區別閱讀了大量資料,最后得知:
當主機填寫為localhost時mysql會采用 unix domain socket連接,當主機填寫為127.0.0.1時mysql會采用tcp方式連接,這是linux套接字網絡的特性,win平臺不會有這個問題.
解決方法:在my.cnf的[mysql]區段里添加:protocol=tcp,保存重啟MySQL,問題解決.
新聞熱點
疑難解答