-1

ローカル システムの postgresql DB に接続する JDBC プログラムがあります。

Class.forName("org.postgresql.Driver");
Connection con=DriverManager.getConnection("jdbc:postgresql://localhost:5432/LOCATIONS_INFO","postgres","password");
System.out.println("Connection Created");

これは正常に実行されます。同じ LAN 内の別のシステムにある postgresql データベースにも接続したいと考えています。localhost を、接続したい他のシステムの IP に置き換えると、例外が発生します。

接続を達成する方法を教えてください。

4

1 に答える 1

1

設定またはネットワークに問題がある可能性があると思います。最初に、別のシステムの PostgreSQL がすべてのネットワーク インターフェイスのポート 5432 でリッスンしているかどうかを確認します。次のコマンドで確認できnetstatます (もちろん、データベース サーバーのコンソールで実行する必要があります)。

[mn@dbtest ~]# netstat -lnp | grep 5432
tcp   0  0 0.0.0.0:5432   0.0.0.0:*   LISTEN   8484/postmaster

(PostgreSQL が Windows で動作する場合は、TCPViewユーティリティの使用をお勧めします)

0.0.0.0:5432は、PostgreSQL がすべてのネットワーク インターフェイスのポート 5432 でリッスンしていることを示しています。

ここで、PostgreSQL の構成で IP からの接続が許可されているかどうかを確認する必要があります。PostgreSQL はpg_hba.confファイルを使用して、さまざまなアドレスからの接続を許可/拒否します。たとえば、私のネットワークエントリでは:

host  all all 169.0.1.0/24   trust 

すべての169.0.1.*マシンが PostgreSQL に接続できるようにします。

そのような構成で接続できる場合は、マシンとデータベース サーバーの両方でファイアウォールを確認してください。

于 2013-04-26T07:15:30.820 に答える