运行cakephp的centos服务器不能访问远程mysql服务器,但可以通过pdo连接访问外部的蛋糕
我可以使用相同的凭据和选项使用myslq命令行客户端进行连接。 然而,当蛋糕试图连接到远程服务器,我得到的是
Error: SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'subdomian.domain.com' (13) requires a database connection
我试着运行这个
GRANT ALL PRIVILEGES ON *.* TO 'myrootuser'@'webserver.domain.com' WITH GRANT OPTION;
这不会帮助我,因为我知道我可以通过cli连接
我可以从我的家庭电脑蛋糕实例远程连接没有问题相同的主机相同的凭据相同的一切
然而,我的所有正确的mysql包安装的运行蛋糕的aos服务器无法连接
我正在使用正确的用户名密码端口的一切,我不断收到错误
我已经清除tmp文件夹caching我用apc清除caching我甚至重新启动httpd
我做了一切。 没有任何工作
我有事件试图暂时closures两台机器上的防火墙…没有骰子同样的错误
我什至尝试创build一个PHP文件,只是使用Pdo连接到数据库,并从命令行运行,它说连接到数据库!
为什么蛋糕不能做蛋糕。 它显然可以从一个独立的PHP文件工作
我证实了我的信用,并一遍又一遍地主持
再次我能够使用我的本地机器上完全相同的代码库连接
所以必须有一个神秘的蛋糕或者apache的东西
我也运行APC重新启动mysqld和httpd不会改变任何东西。 我以这个废话结束我的思维。
这是我正在testing的PHP脚本
$hostname = "my.dns.name.tohost"; $username = "myrootuser"; $password = "myrootuserpass"; try { $db = new PDO("mysql:host=$hostname;dbname=myDbSchemaName", $username, $password); echo "Connected to database"; } catch(PDOException $e) { echo $e->getMessage(); }
//控制台输出
Connected to database[root@localhost ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@localhost ~]# php connectInt.php Connected to database[root@localhost ~]#
我什至试过其他方式在PHP我做了一个正常的MySQL连接脚本使用相同的credentails它可以连接它可以看到所有的数据库。
[root@localhost ~]# php connectInt.php information_schema mydbname1 myotherdb mysql test
所以cakephp不喜欢连接到同一子网中的其他linux服务器,没有任何防火墙打开,但任何其他的PHP执行相同的凭据工作。 我的本地电脑运行完全相同的代码库与同一台服务器通话。
在我的情况下,Centos是阻止httpd连接到MySQL。
执行此操作
setsebool -P httpd_can_network_connect=1