Centos 7マシンでPostgres(バージョン9.2)データベースを実行していて、データソースエクスプローラーを使用してWindows 10マシンのEclipse Oxygenから接続しようとしています。
Eclipseの[接続の詳細]画面にすべての情報を入力して[テスト接続]をクリックすると、次のエラーが発生します。
org.postgresql.util.PSQLException: The connection attempt failed.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.Java:250)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.Java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.Java:195)
at org.postgresql.Driver.makeConnection(Driver.Java:454)
at org.postgresql.Driver.connect(Driver.Java:256)
at org.Eclipse.datatools.enablement.internal.postgresql.PostgreSQLJDBCConnection.createConnection(PostgreSQLJDBCConnection.Java:87)
at org.Eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.Java:105)
at org.Eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.Java:54)
at org.Eclipse.datatools.enablement.internal.postgresql.PostgreSQLJDBCConnection.<init>(PostgreSQLJDBCConnection.Java:47)
at org.Eclipse.datatools.enablement.internal.postgresql.PostgreSQLConnectionFactory.createConnection(PostgreSQLConnectionFactory.Java:51)
at org.Eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.Java:83)
at org.Eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.Java:359)
at org.Eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.Java:76)
at org.Eclipse.datatools.connectivity.ui.PingJob.run(PingJob.Java:59)
at org.Eclipse.core.internal.jobs.Worker.run(Worker.Java:56)
Caused by: Java.net.SocketTimeoutException: connect timed out
at Java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at Java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at Java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at Java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at Java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at Java.net.PlainSocketImpl.connect(Unknown Source)
at Java.net.SocksSocketImpl.connect(Unknown Source)
at Java.net.Socket.connect(Unknown Source)
at org.postgresql.core.PGStream.<init>(PGStream.Java:69)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.Java:152)
... 14 more
私はCentosとPostgresにかなり慣れていないので、これが何を意味するのか完全にはわかりません。接続するために入力した情報が正しいことを知っています。 WindowsからCentosマシンにpingでき、CentosからWindowsマシンにpingできます。 WindowsからPuTTYを使用してCentosマシンに接続することもできます。
前もって感謝します。
この行は問題を示しています:
Caused by: Java.net.SocketTimeoutException: connect timed out
経験則として、通常、Javaスタックトレースでは、最初の「原因」(最後に出力)が必要です。
Win10はCentOSのpostgresqlに接続できません。 PostgreSQLは通常、TCPポート5432を使用します。
接続タイムアウトエラーが発生します。つまり、win10は完全に応答しません。何もない。 postgresqlが接続を許可しない場合、またはpostgresqlがtcpポート5432で待機しない場合は、「認証エラー」または「接続拒否」エラーが発生しました。
しかし、あなたのwin10は何も得ず、エラーも起こしません。サーバーが存在しないかのように。
あなたはあなたのpostgresqlの可用性をチェックすることができます
telnet your.centos.ip 5432
コマンド。
あなたの問題の最も可能性の高い原因は、centosのデフォルトのファイアウォール設定が5432ポートを単にフィルターにかけることです。それを有効にします。
2番目に考えられる原因は、誤ったIPを入力したことです。
その問題を解決した場合、
ネットワーク上でpostgresqlを待機させるには、ファイアウォール構成の他にいくつかの異なる設定も必要です。
listen_addresses
のpostgresql.conf
行で実行できます。pg_hba.conf
で認証(md5パスワードが最も可能性が高い)を設定する必要があります。まず pgadmin やコマンドラインpsql
ツールなどのクライアントとpostgresqlを接続します(cygwinにも付属しています)。それが機能した後、Javaから接続するためにプレイしてください。