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

标签 java postgresql

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

当我在另一台 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

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


我编辑了文件“pg_hpa.conf”添加:

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

我编辑了文件“pgpostgressql.conf”添加:

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" );

地点:

  • 用户名和密码与我从本地主机连接时使用的相同(在这种情况下有效)

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

  • 5432 是端口,与我从本地主机连接时使用的端口相同(在这种情况下它可以工作)

  • myDBname 是数据库名称

当我在本地主机上运行 java 应用程序时,然后在同一台 PC-A 中,我使用相同的代码,其中不是“192.168.1.6”而是“127.0.0.1”


使用 pgAdmin III,我的数据库在 1 个服务器下:

  • 我的名称服务器 (192.168.1.6:5432)

请帮帮我!!!

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

最佳答案

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

请注意,“连接被拒绝”与“连接超时”不是同一个问题。

并且在 postgresql.conf 中你应该只有一个“listen_addresses”参数,“*”与“0.0.0.0”相同。

关于java - Postgres 9.4 - 连接被拒绝 - 当我从远程 PC 连接时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611945/

相关文章:

sql - Postgresql - 从选择中删除元素的 Array_remove

java - 如何从JDBC+postgreSql时间戳获取UTC时间戳?

postgresql - 无法使用 gorm Postgresql 设置外键

java - 读取在线存储的文本文件

java - Jsoup.clean() 未关闭并打开标签

postgresql - 哪些表有表继承

python - 无法从 Trac 获取数据库连接?

java - 为什么 sleep 方法会影响/不在面板上显示我更新的 JTextArea?

java - Android View OnDraw 方法 : fill everything EXCEPT some view

java - 'mix class and interfaces in the same package' 是不好的做法吗?