標籤:nginx mysql 整合 socket
nginx與mysql“勾結”比較常見的錯誤就是,當本伺服器的mysql主機預設為localhost的時候,nginx往往無法發現其資料庫,哪怕是帳號密碼都正確也發現不了,從而資料庫裡的內容不能以網頁的形式呈現出來。
這種情況是為嘛呢?
這個情況主要是因為在linux下,nginx預設與mysql的連結不是用tcp協議而是socket,但是當我們開啟mysql的相關檔案時候,會看見mysql把socket檔案指向為no_value,
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/7F/CC/wKioL1ctlxHAWv6iAAEK2zl0j0c667.png" title="1.png" alt="wKioL1ctlxHAWv6iAAEK2zl0j0c667.png" />
來到/var/lib/mysql/檔案夾下,會看到有一個mysql.sock,這是一個粉色檔案。
然後返回到php的安裝資料夾下,開啟檔案夾下的lib/php會看到php.ini,如果沒有這個檔案,就返回到php的最初解壓縮的下載包裡,找到php.ini-development,把這個檔案cp到lib/php那個檔案夾裡。
開啟php.ini-development,發現mysql-socket也是空,
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M00/7F/CE/wKiom1ctmZvh8f2IAAA1rGguMKA798.png" title="1.png" alt="wKiom1ctmZvh8f2IAAA1rGguMKA798.png" />
於是把粉色檔案mysql.sock的完整路徑填寫到mysql.default_socket後面即可。然後儲存退出,重啟php-fpm,這時候重新重新整理nginx的mysql綁定資料庫頁面,就應該可以看到資料庫被成功重新整理了(至少會有一個test預設資料庫)。
當然,如果你不喜歡socket通訊,就可以把資料庫主機的localhost改成127.0.0.1,強迫nginx走tcp 協議也是可以的,這樣就不用費那麼多事兒了。
本文出自 “生活就是等待戈多” 部落格,請務必保留此出處http://chenx1242.blog.51cto.com/10430133/1771018
解決Nginx與mysql勾結的錯誤