实际上我正在尝试使用 pgpool2 和 docker 容器创建一个 postgres 复制系统,我创建了 2 个运行 postgres 的容器和另一个用于 pgpool2 的容器,所以当我尝试通过 php 脚本连接到 pgpool2 服务器时,出现以下错误:
pg_connect(): 无法连接到 PostgreSQL 服务器: 无法连接到服务器: 连接被拒绝
答案1
我没有与码头工人之前…但是…
在大多数默认配置中,postgresql 不允许非本地连接。为了允许远程连接,您需要在 pg_hba.conf 文件中添加“主机”行。
通常该文件位于类似以下位置的位置:
/etc/postgresql/9.6/main/pg_hba.conf
像这样的东西:
#TYPE DATABASE USER ADDRESS AUTH METHOD
host database1 user1 192.168.1.0/24 md5
然后通过 /etc/init.d/postgresql restart 或任何适合您操作系统的方式重新启动您的 postgresql 集群。
您应该能够通过以下方式查看远程主机上的开放端口:
netstat -l
如果你做得正确,地址应该从 'localhost' 更改为 0.0.0.0 。
您还需要添加“user1”作为带有密码的 postgresql 用户,并为该用户创建一个数据库来玩。
这可以通过以下方式成为 postgresql 超级用户来完成:
sudo -s
#su postgres
postgres@host$ createuser user1 -P
enter in a password
postgres@host$ createdb database1 -O user1
然后您应该能够通过以下本地命令连接到远程 postgresql 集群:
psql -h remote.host.address -U user1 -d database1
当然,所有IP地址仅是示例性的。进行适当的更改。