我最近刚刚通过SSH在我们的服务器上安装PostgreSQL . 安装成功,直到我尝试在我的Windows机器上使用pgAdmin连接到它 . 我收到这种错误:
无法连接到服务器:连接被拒绝(0x0000274D / 10061)服务器是否在主机“xxx.xxx.xxx.xxx”上运行并接受端口5432上的TCP / IP连接?
xxx.xxx.xxx.xxx =我服务器的公共IP .
文档建议可以通过在/etc/postgresql/9.1/main/postgresql.conf中设置 listen_addresses = '*'
的值来修复此问题 . 我做到了,但它仍然不会让我 .
出现了额外的错误
致命:主机“xxx.xx.xxx.xxx”没有pg_hba.conf条目,用户“postgres”,数据库“postgres”,FATAL上的SSL:主机“xxx.xx.xxx.xxx”没有pg_hba.conf条目,用户“postgres”,数据库“postgres”,SSL关闭
xxx.xx.xxx.xxx =我的IP地址 .
似乎我错过了什么?
3 回答
可能阻止postgres连接的事情:
错误配置listen_address in postgresql.conf
selinux(?)
iptables
pg_hba.conf(虽然这应该导致不同的错误,不是服务器不听)
如果你进入并运行
psql
,你可以在本地连接到服务器吗?在我们的内部开发服务器上,我只关闭selinux和iptables . 从安全角度来看,这是一个坏主意,但它可以作为一个临时步骤来帮助您缩小问题所在 .
您可能需要更改多个配置文件 . 在您的情况下,您可能也需要编辑pg_hba.conf . 在"non-local connections"中搜索该文件 .
我喜欢将配置文件保留在版本控制之下 . 通过这种方式从错误中恢复更容易 .
您可能需要在进行这些更改后重新启动PostgreSQL服务器 .
更改服务器上的listen_addresses设置后,请确保重新启动PostgreSQL服务器(使用kill -HUP等将SIGHUP发送到postmaster进程) .
确保postgresql.conf端口设置为5432
确保如果服务器上正在运行防火墙,那么对于来自您正在使用的窗口(客户端)计算机的连接,该端口5432是打开的
检查pg_hba.conf以确保客户端计算机的子网具有访问权限
尝试在本地使用psql