此次有點難搞,因爲第一次使用nginx和php的php-fpm,mysql也是使用第三方修改過mysql(http://www.percona.com/ 這是加強版的mysql,一個dba推薦給我 ),因此以爲有點難搞,首先就是去檢查數據庫用戶是否遠程登陸,因而登陸mysql,發現的確是不容許遠程登陸到mysql,然php
GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION;
後就受權遠程登陸依然執行程序時依然是拒絕,而後我就懷疑是否與php-fpm執行用戶有關,因而又去看了一遍php-fpm的配置文件,沒有看到有配置用戶或者權限,真是蛋疼,而後又把關的日誌文件都翻了一次,沒有任何記錄,mysql
more /var/log/message #系統級別的 more /var/log/mysql #mysql的這裏卻是有一條說這臺機器不能解釋名稱或者服務未知的,難以理解 #2014-04-08 22:46:45 5044 [Warning] IP address '183.29.144.92' could not be resolved: Name or service not known 接着去查看 /etc/hosts #localhost 解釋沒有問題 more /usr/local/php/var/log #php的沒有錯誤的報告
後來乾脆就直接寫個簡單mysql函數測試能不能鏈接數據庫,結果是鏈接上了,但是不能明白,我以前的程序不能夠,因而打開程序mysql配置文件,發現是使用localhost做爲主機地址的,因此鏈接不了數據庫,因而又返回到mysql的用戶表中查看主機與用戶名的對應關係,原來是主機與用戶對應關係不一致nginx
mysql> select User,Host from user; +-------+-----------+ | User | Host | +-------+-----------+ | root | % | | zhuan | % | | root | 127.0.0.1 | | root | ::1 | | | cloud | | root | cloud | | | localhost | | root | localhost | +-------+-----------+ 8 rows in set (0.00 sec)