好吧,我似乎已经尝试了所有我能找到的方法 - 虽然不是很多 - 但无法理解为什么我无法与我的数据库建立远程连接。
以下是我所拥有的:
#postgresql.conf
listen_addresses = '12.34.56.78,localhost' # included my local ip
port = 5432 # the port I'm trying to connect with
tcpip_socket = true
#pg_hba.conf
host all mydbuser 12.34.56.78/32 md5
I receive: connection to database 'name' failed, could not connect to server: Connection refused.
Is the server running on host "domain.com" and accepting
TCP/IP connections on port 5432?
netstat -ant | grep 5432 #returns nothing
netstat -nltp | grep 5432:不返回任何内容
解决方案
我觉得真正让我无法理解这一点的,是一篇关于这个主题的博客文章写得不好。另一方面,一个很棒的教程切片主机帮我理清了一切,如果有人遇到同样的问题,我建议他们通读一下。Slicehost 的教程质量和维护确实值得称赞,不过我想帮助人们使用他们的服务是一桩好生意。
感谢所有回答的人。
答案1
您可以在数据库服务器上运行以下命令并发布输出:
ps axf | grep postgres
- 监听端口
netstat -nltp | grep 5432
要绕过防火墙,请尝试使用端口 80 或 8080,而不是 5432。
您是从 12.34.56.78/32 进行连接的(这是您的 pg_hba.conf 中允许的范围)吗?
您能 ping 通 12.34.56.78 吗?
从空netstat
输出来看,您的 postgres 进程似乎没有监听端口!
当您重新启动数据库时,/var/log/postgresql/ 中是否会出现一些有趣的内容。
答案2
你检查过防火墙吗?你可能设置了一些规则来阻止访问该端口
答案3
主机所有 mydbuser 12.34.56.78/32 md5
pg_hba.conf 中的此行意味着只有来自主机 12.34.56.78 的用户 mydbuser 才能连接。
因此,如果这是 PG 服务器,则需要为主机或子网添加另一行(即,如果您希望 12.34.45.01-254 中的任何一个进行连接,则需要输入 12.34.56.00/24)