这次有点难搞,由于第一次使用nginx和php的php-fpm,mysql也是使用第三方修改过mysql(http://www.percona.com/ 这是增强版的mysql,一个dba推荐给我 ),所以觉得有点难搞,首先就是去检查数据库用户是否远程登录,于是登录mysql,发现的确是不允许远程登录到mysql,然
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
后就授权远程登录依然执行程序时依然是拒绝,然后我就怀疑是否与php-fpm执行用户有关,于是又去看了一遍php-fpm的配置文件,没有看到有配置用户或者权限,真是蛋疼,然后又把关的日志文件都翻了一次,没有任何记录,
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的用户表中查看主机与用户名的对应关系,原来是主机与用户对应关系不一致
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)