2016-10-12 11 views
2

仮想マシン内のPHPスクリプトを使用してPostgreSQLデータベースに接続しようとしましたが、失敗しています。PHP - 仮想マシンのPostgreSQLデータベースへの接続に失敗しました

私はホスト(Windows 8.1)からphpを実行し、postgresqlは仮想マシン(Debian 8.6)にあります。私はVirtualBoxを使用します。

ブラウザからのエラー出力は次のとおりです。

警告:のpg_connect():PostgreSQLサーバに接続できません:サーバーに接続できませんでした:「接続がタイムアウトしました(0x0000274C/10060)サーバがホスト上で実行されています10.0.2.15 "とポート5432でTCP/IP接続を受け入れますか? 11行目のC:\ xampp \ htdocs \ pg_test.php

11行目はpg_connect($conn_string)です。 pg_connect($conn_string)に渡さ

パラメータは次のとおりです。私はゲストがIP 10.0.2.15を持っていること(ifconfigコマンドで)確認されているため

$host = "host=10.0.2.15"; 
$port = "port=5432"; 
$dbname = "dbname=postgres"; 
$user = "user=user_switch"; 
$password = "password=switch"; 
$conn_string = "$host $port $dbname $user $password"; 
pg_connect($conn_string); 

は私がhost=10.0.2.15を使用しています。

にpg_hba.conf:

host all all 0.0.0.0/0 trust

のpostgresql.conf:

listen_addresses = '*'

iptables Iで

は私が行を含めるために、ファイル pg_hba.confpostgresql.confを修正しましたルールを追加しました -A INPUT -p tcp -m cp --dport 5432 -j ACCEPT

また、Windowsホストでファイアウォールを無効にしてみました。

SELinuxが接続をブロックしていると言われる場所もありますが、ゲストにはインストールされていません。

ゲストのuser_switchを使用してデータベースに正常に接続するには、コマンドをpsql -d postgres -U user_switch -W -h localhostと入力して、パスワードの入力を求めます。

ありがとうございました。私が忘れてしまったかもしれないより多くの仕様についてお気軽にお問い合わせください。

+0

'psql -d postgres -U user_switch -W -h 10.0.2.15'を使用してゲストマシンから接続できますか? – pietrop

+0

@pietropこのエラーは、 'psql:FATAL:pg_hbaに行がありません。<<10.0.2.15>用のconf>、ユーザー<>、データベース<>、SSL –

答えて

2

ホストとゲストは同じネットワーク上になければなりません。ホストには192.168.56.1、ゲストには192.168.56.101など、両方に適切なアドレスを割り当てる必要があります。セキュリティ上の理由から、あなたは、任意のIP(0.0.0.0/0)からの接続を許可する行を削除する必要がありますし、pg_hba.confに次の行を追加します

host all all 192.168.56.0/24 trust 

とPostgreSQLを再起動します。これにより、ゲストへの接続試行がすべて192.168.56.xから可能になります。

+0

inactive'それはまだ私がホストからの接続にすることはできませんが、ゲストで、私はあなたのコメントからコマンドを使用して接続することができます。 –

+0

@DeRipperホストマシンのアドレスは何ですか? – pietrop

+0

wi-fi接続の場合は「192.168.1.37」、バーチャルボックスホストオンリーネットワークの場合は「192.168.56.1」です。 pg_hba.confファイルには、両方の行が2行含まれていますが、結果はありません。 –

関連する問題