Postgres 9.4 - 连接被拒绝 - 当我从远程PC连接时

时间:2015-09-16 14:48:07

标签: java postgresql

我有一台PC,我们称之为PC-A(WIndows 8.1),运行Postgres 9.4。我还有一个java应用程序,它需要访问数据库, 当我在同一台PC-A上运行我的Java应用程序,然后从localhost运行时,一切正常。

当我在另一台PC上运行我的Java应用程序时,让它称之为PC-B(WIndows 8.1),因此它尝试连接到PC-A上的数据库,我收到以下错误(我翻译了它用英语写的,低于意大利语中的原始信息:

Postgresql : Connection refused. Check that the hostname and port are correct and that the postmaster is running with option -i, that enables the TCP/IP connections


org.postgresql.util.PSQLException: Connessione rifiutata. Controllare 
che il nome dell'host e la porta siano corretti, e che il server (postmaster) sia in esecuzione con l'opzione -i, che abilita le 
connessioni attraverso la rete TCP/IP.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:122)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:382)
    at org.postgresql.Driver.connect(Driver.java:260)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at Database.Registrar.getconnection(Registrar.java:56)
    at Database.Registrar.readParametersFromTable(Registrar.java:844)
    at Managers.FunctionsAndParameters.writeParametersInMyConfiguration(FunctionsAndParameters.java:405)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    at org.postgresql.core.PGStream.<init>(PGStream.java:59)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:77)
    ... 12 more

在网上寻找类似的问题我尝试了一些建议的解决方案,但没有成功:

我编辑了文件&#34; pg_hpa.conf&#34;中加入:

host    all    all    192.168.1.0/24    trust    # it should enable all addresses: 192.168.1.*

host    all    all    192.168.1.6/32    trust    # it should enable the address of PC-A

我编辑了文件&#34; pgpostgressql.conf&#34;中加入:

listen_addresses = '192.168.1.6'    # it should enable the address of PC-A

listen_addresses = '0.0.0.0'        # it should enable all addresses

它也已经存在:

listen_addresses = '*'           # it should enable all addresses

PC-B上的我的Java应用程序尝试使用以下代码连接到数据库:

String driver = "org.postgresql.Driver";
Class.forName(driver);
connection = DriverManager.getConnection(jdbc:postgresql://192.168.1.6:5432/myDBname, "username" , "password" );

其中:

  • 用户名e密码与我从localhost连接时使用的相同(在这种情况下可以使用)

  • 192.168.1.6是PC-A的IP地址(运行Postgres的地方)

  • 5432是端口,与我从localhost连接时使用的相同(在这种情况下可以使用)

  • myDBname是数据库名称

当我在localhost上运行java应用程序,然后在同一台PC-A中,我使用相同的代码而不是&#34; 192.168.1.6&#34;有&#34; 127.0.0.1&#34;

使用pgAdmin III,我的数据库位于1 Server:

  • mynameserver(192.168.1.6:5432)

请帮助我!!!

更新:解决了!!!我禁用了Windows防火墙,现在它可以工作!!!

1 个答案:

答案 0 :(得分:3)

您可以检查双方的防火墙配置,并尝试从PC-B ping PC-A,以查看两台主机之间是否存在连接问题。

请注意&#34;连接被拒绝&#34;与&#34;连接超时&#34;。

不是同一个问题

在postgresql.conf中你应该只有一个&#34; listen_addresses&#34;参数和&#34; *&#34;与&#34; 0.0.0.0&#34;。

相同