远程连接PostgreSQL时出错

时间:2012-07-26 07:25:46

标签: database postgresql postgresql-9.1 pgadmin

当我尝试远程连接PostgreSQL数据库时遇到问题。我在本地PC工作,我在服务器中有数据库。在服务器中,我配置了pg_hba.conf和postgresql.conf。第一个文件看起来像:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             46.18.24.0/22           trust
host    all             all             193.106.180.0/22        trust
host    all             all             193.146.230.62/32       trust

第二个:

listen_addresses = '*'                  
port = 5432             
max_connections = 100

我确信端口5432在服务器端打开。

然而,当我尝试通过pgAdmin III从我的电脑(193.146.230.62)连接时,我不能。问题是什么?

提前非常感谢!

4 个答案:

答案 0 :(得分:2)

服务器上是否有防火墙,PC上是否有第三方附加防火墙?

如果服务器是Linux,请检查sudo iptables -L并查看是否有任何内容。默认的无防火墙配置是:

Chain INPUT (policy ACCEPT) target     
prot opt source               destination         

Chain FORWARD (policy ACCEPT) target     
prot opt source               destination         

Chain OUTPUT (policy ACCEPT) target     
prot opt source               destination

在Windows服务器上,检查Windows防火墙以确保允许postgres.exe监听和/或端口已打开。

在Windows客户端上,检查是否安装了第三方“Internet安全”或防火墙程序。如果只有Windows防火墙,那就没关系,这不会是问题。但是,某些第三方防火墙会阻止传出连接,并且可能是您问题的根源。

检查您是否可以ping服务器。

如果这没有帮助,请编辑您的问题,以添加您收到的错误消息的确切字词以及 您正在连接的描述(psql, PgAdmin-III,JDBC,等等。

一旦有联系工作,请务必将trust更改回md5并设置用户密码。以trust模式运行几乎说“嘿,任何可以上网的人,如果你愿意,可以窃取或破坏我的数据。”

答案 1 :(得分:0)

有关详细信息,请参阅PostgreSQL的日志,可能是您应该设置参数log_connections = on   和$ PGDATA / postgresql.conf文件的log_disconnections = on

顺便提一下,我建议你使用md5身份验证方法而不是信任。

答案 2 :(得分:0)

尝试将listen_addresses更改为服务器的本地IP并在/24中指定pg_hba.conf掩码,正如PresleyDias建议的那样。

答案 3 :(得分:0)

如何尝试更改pg_hba.conf。 只需将127.0.0.1/32更改为0.0.0.0/0

即可
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
host    all             all             46.18.24.0/22           trust
host    all             all             193.106.180.0/22        trust
host    all             all             193.146.230.62/32       trust