当我尝试远程连接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)连接时,我不能。问题是什么?
提前非常感谢!
答案 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