我正在尝试使用 Windows 上的 pgAdmin 连接到postgresql
在本地主机的 Ubuntu 12.04 VM 上运行的 9.1.8。主机的端口 5432 转发到 VM 的端口 5432。
pgAdmin 错误:
Error connecting to the server: could not receive data from server: Software caused connection abortion (0x00002745/10053)
PostgreSQL 配置文件
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*'
port = 5432
配置文件
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
netstat -nlp | 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 29035/postgres
unix 2 [ ACC ] STREAM LISTENING 50823 29035/postgres /var/run/postgresql/.s.PGSQL.5432
iptables 规则
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
PostgreSQL 服务已重新启动,但 pgAdmin 仍然出现错误。您知道是什么原因造成的吗?
答案1
遇到了同样的问题,归结为 3 个步骤:
1- 在 Mavericks 上(10.6+ 版本也一样),端口 5432 已被占用,因此需要执行以下操作: --- config.vm.network“forwarded_port”,guest:5432,host:5433' 在“Vagrantfile”上,然后使用端口 5433 通过 pgadmin3 进行连接
2- listen_address = '*' # 在 postgresql.conf 中,允许服务器侦听来自所有 ip 的套接字连接
3-需要在‘pg_hba.conf’中启用主机
我把 vagrant 上 postgresql 所需的配置 shell 脚本放在这里:
答案2
TCP 数据包被允许进入,但是它们是否被允许从虚拟机传出到主机?
如果需要 INPUT 规则,则可能也需要 OUTPUT 规则,例如:
iptables -I OUTPUT -p tcp --sport 5432 -m state --state ESTABLISHED -j ACCEPT
您也可以看看这个相关问题: 无法连接到 Vagrant Box 上的 Postgres - 连接被拒绝