国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL主機127.0.0.1與localhost區別總結

2024-07-24 12:38:16
字體:
來源:轉載
供稿:網友

可能有很多朋友都會碰到一個問題不知道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. *************************** 1. row *************************** 
  2.                  Host: localhost 
  3.                  User: root 
  4. ...... 
  5. *************************** 2. row *************************** 
  6.                  Host: 127.0.0.1 
  7.                  User: root 

證明,代碼如下:

  1. shell> mysql -h 127.0.0.1 
  2. mysql> status; 
  3. Current user:           root@localhost 
  4. SSL:                    Not in use 
  5. Current pager:          stdout 
  6. Using outfile:          '' 
  7. Using delimiter:        ; 
  8. Server version:         5.1.33-log Source distribution 
  9. Protocol version:       10 
  10. Connection:             127.0.0.1 via TCP/IP 
  11. shell> mysql -h locahostmysql> status; 
  12. Current user:           root@localhost 
  13. SSL:                    Not in use 
  14. Current pager:          stdout 
  15. Using outfile:          '' 
  16. Using delimiter:        ; 
  17. Server version:         5.1.33-log Source distribution 
  18. Protocol version:       10  --Vevb.com
  19. 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,問題解決.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 明星| 新河县| 稷山县| 沂南县| 珲春市| 武城县| 通江县| 石嘴山市| 陆川县| 山阳县| 海安县| 夹江县| 崇义县| 五台县| 台安县| 康定县| 武清区| 锦屏县| 常德市| 慈利县| 龙游县| 临武县| 铜川市| 抚松县| 泌阳县| 包头市| 洪湖市| 图片| 察哈| 清丰县| 安达市| 安丘市| 彭州市| 科尔| 济南市| 来安县| 安庆市| 石门县| 辽中县| 平度市| 永福县|