- 締切済み
PHPからのDB接続がうまくいかない
mysqlやpsqlからはつながるのに、phpMyAdminやphpPgAdminで同じホスト、ユーザー名、パスワードを指定してもアクセス拒否されてしまいます。 具体的には、仮想化環境にゲストとしてウェブサーバーとDBサーバーの2台があり、2台は別々の仮想ブリッジインターフェイスに接続されていて、仮想化ホストがiptablesでアクセス制限、ルーティングを行っております。 mysqlやphpMyAdmin、psqlやphpPgAdminはどちらも同じウェブサーバーからDBサーバーをホストとして指定してアクセスしています。 DBサーバーのMySQLもPostgreSQLも次のような感じでユーザーを追加してあります。(PostgreSQLはpg_hba.confもMySQLと同じ内容になるよう設定済み) GRANT ALL PRIVILEGES ON *.* TO 'ユーザー名'@'ウェブサーバーアドレス' IDENTIFIED BY 'パスワード'; phpMyAdminに接続先情報を設定して接続しようとすると次のようなメッセージが表示されます。 「#2003 - Can't connect to MySQL server on 'DBサーバーアドレス' (13) サーバが応答しません。」 phpPgAdminでは次のメッセージが表示されます。 「ログインに失敗しました」 ちなみに、すべてのアドレスからの接続を許可するようにSQLサーバーを設定しても同じでした。 どこか設定が抜けているのでしょうか。 宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
MySQL serverとのTCPIPでの接続に失敗しています。 調査方法 mysql の標準ポートは3306ですので %telnet "phpMyAdminで指定したhostname" 3306 mysqlで接続できているので、接続できるはずですが。 接続エラーがある場合、内容により設定を見直してください。 接続できる場合 phpMyAdminの設定を見直してください。 config.inc.php /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Server parameters */ $cfg['Servers'][$i]['host'] = 'DBのIPアドレス'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Select mysqli if your server has it */ $cfg['Servers'][$i]['extension'] = 'mysql';
お礼
ご回答ありがとうございました。 遅くなりましてすみません。 こちらの件、自己解決しました。 原因はSELinuxによってApacheがネットワーク越しにDBへ接続するのをブロックしていたからでした。 次のコマンドをウェブサーバーのCLIにて実行し、 設定を追加することで解決しました。 setsebool -P httpd_can_network_connect_db 1 参考サイト: how do I allow mysql connections through selinux - Server Fault http://serverfault.com/questions/240015/how-do-i-allow-mysql-connections-through-selinux