您好,登錄后才能下訂單哦!
這篇文章主要介紹MySQL數(shù)據(jù)庫主機127.0.0.1與localhost區(qū)別是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
可能有很多朋友都會碰到一個問題不知道127.0.0.1與localhost有什么區(qū)別,但是有的時間會發(fā)現(xiàn)使用localhost連接不了,但是改成127.0.0.1即可了連接了,那么他們會有什么區(qū)別呢,下面我給大家介紹。
mysql -h 127.0.0.1 的時候,使用 TCP/IP 連接, mysql server 認為該連接來自于127.0.0.1或者是"localhost.localdomain"
mysql -h localhost 的時候,是 不使用TCP/IP 連接的,而使用 Unix socket ;此時,mysql server則認為該client是來自"localhost"
mysql權限管理中的"localhost"有特定含義:
注意:雖然兩者連接方式有區(qū)別,但當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; Currentuser: root@localhost SSL: Notin 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; Currentuser: root@localhost SSL: Notin use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.1.33-log Source distribution Protocol version: 10 Connection: Localhost via UNIX socket
發(fā)現(xiàn)問題
昨天在幫同事編譯安裝Linux環(huán)境時,遇到一個問題:
Web服務器是apache,數(shù)據(jù)庫是MySQL。
于是寫了一個測試連接數(shù)據(jù)庫的PHP頁面:
$mysql = mysql_connect('localhost','root','');
打開 http://localhost/test.php 測試
提示:Can't connect to local MySQL server through socket...
檢查環(huán)境正常
以為是數(shù)據(jù)庫沒有啟動,于是查看一下進程,MySQL在進程里,重啟了一下MySQL.
使用 mysql -u root -p
可以進入MySQL操作界面
直接使用/usr/local/php5/bin/php /web/test.php
執(zhí)行可以連上數(shù)據(jù)庫
apache也重啟了,一樣無效
疑點:為何網(wǎng)頁執(zhí)行失敗,命令執(zhí)行卻成功
這下就郁悶了,使用php命令直接執(zhí)行就成功,通過網(wǎng)頁執(zhí)行就失敗。難道是apache導致?網(wǎng)上搜索了大堆資料也沒找到解決方案,重新編譯安裝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連接數(shù)據(jù)庫時,主機填寫localhost與其它的區(qū)別閱讀了大量資料,最后得知:
當主機填寫為localhost時mysql會采用 unix domain socket
連接
當主機填寫為127.0.0.1時mysql會采用tcp方式連接
這是linux套接字網(wǎng)絡的特性,win平臺不會有這個問題
解決方法
在my.cnf的[mysql]區(qū)段里添加
protocol=tcp
以上是“MySQL數(shù)據(jù)庫主機127.0.0.1與localhost區(qū)別是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。