我有一个JDBC程序,它连接到我的本地系统postgresql DB。
Class.forName("org.postgresql.Driver");
Connection con=DriverManager.getConnection("jdbc:postgresql://localhost:5432/LOCATIONS_INFO","postgres","password");
System.out.println("Connection Created");
这成功执行。我还想连接到同一局域网中另一个系统上的postgresql数据库。当我用我要连接的其他系统的IP替换localhost时,我得到一个例外。
请帮我看看如何实现连接。
答案 0 :(得分: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连接。
如果此类配置允许您连接,请检查计算机和数据库服务器上的防火墙。