これもstackexchangeで尋ねましたが、構成ではなくプログラミングの問題のように見え始めています
Cakephp を実行している centos サーバーは、リモートの mysql サーバーにアクセスできませんが、ケーキの外部で pdo connect を介してアクセスできます
同じ資格情報とオプションを使用して、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経由で接続できることがわかっているので、これは役に立ちません
自宅のコンピューターのケーキインスタンスからリモートで接続できますが、問題はありません 同じホスト 同じ資格情報 すべて同じ
それでも、すべての適切なmysqlパッケージがインストールされたケーキを実行している私のcentos Apacheサーバーは接続できません
正しいユーザー名パスワードポートすべてを使用していますが、そのエラーが発生し続けます
tmp フォルダのキャッシュをクリアしました apc を使用してキャッシュをクリアしました httpd を再起動しました
私はすべてをやった。何も機能しません。
両方のマシンでファイアウォールを一時的にシャットダウンしようとしたイベントがあります...サイコロ同じエラーはありません
pdoを使用してdbに接続し、コマンドラインから実行するだけのphpファイルを作成してみましたが、Connected to Databaseと表示されます!!
なぜケーキはケーキからできないのか。明らかに、単独のphpファイルから機能します
資格情報とホストを何度も確認しました
ここでも、ローカル マシンでまったく同じコードベースを使用して接続できます
だから、ミステリーケーキやcentos apacheのようなものが必要です
また、mysqld を再起動する APC を実行していますが、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で他の方法を試しました.接続できるのと同じ資格情報を使用して通常の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 は機能します。同じサーバーと通信するまったく同じコードベースを実行している私のローカルPCは機能します。