我也在stackexchange上问过这个问题,但它开始看起来更像是一个编程问题而不是配置
运行cakephp的centos服务器无法访问远程mysql服务器但可以通过pdo connect在cake外访问
我可以使用 mysql 命令行客户端使用相同的凭据和选项进行连接。但是,当蛋糕尝试连接到远程服务器时,我得到的只是
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 连接
我可以从我的家用电脑蛋糕实例远程连接没有问题相同的主机相同的凭据相同的一切
然而,我的 centos apache 服务器运行 cake 并安装了所有正确的 mysql 包无法连接
我使用正确的用户名密码端口一切,我不断收到该错误
我已经清除了 tmp 文件夹缓存 我使用 apc 清除缓存 我什至重新启动了 httpd
我已经做了一切。没有任何效果。
我有事件尝试暂时关闭两台机器上的防火墙......没有骰子同样的错误
我什至尝试创建一个仅使用 pdo 连接到数据库并从命令行运行它的 php 文件,它显示已连接到数据库!
为什么蛋糕不能用蛋糕做。它显然可以从一个单独的 php 文件中工作
我一遍又一遍地验证了我的信誉和主机
我再次能够在本地机器上使用完全相同的代码库进行连接
所以必须有类似神秘蛋糕或centos apache之类的东西
我也在运行 APC Restarting mysqld 并且 httpd 并没有改变任何东西。我对这种废话束手无策。
这是我正在测试的 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 ~]#
所以我很酷,让我们再次尝试站点。
Error: SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'subdomian.domain.com' (13) requires a database connection
没有任何作用
我什至在php中尝试了其他方法我使用相同的credentails做了一个普通的mysql连接脚本它可以连接它可以看到所有的数据库。
<?php
$hostname = "dns.name.com";
$username = "mygoodtestednonrootuser";
$password = "somepasswoerd";
try {
$db = new PDO("mysql:host=$hostname;dbname=int_zzipline", $username, $password);
$link = mysql_connect($hostname, $username, $password);
$db_list = mysql_list_dbs($link);
while ($row = mysql_fetch_object($db_list))
{
echo 'Connected to database';
echo $row->Database . "\n";
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
[root@localhost ~]# php connectInt.php
information_schema
mydbname1
myotherdb
mysql
test
所以我很酷,让我们再试试这个网站
Error: SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'subdomian.domain.com' (13) requires a database connection
这至少可以说是令人愤怒的。
所以 cakephp 不喜欢在没有打开任何防火墙的情况下连接到同一子网中的其他 linux 服务器,但使用相同凭据执行的任何其他 php 都可以工作。我的本地电脑运行完全相同的代码库,与同一台服务器通信。