실제로 저는 pgpool2와 docker 컨테이너를 사용하여 postgres 복제 시스템을 만들려고 합니다. postgres를 실행하는 2개의 컨테이너와 pgpool2용 또 다른 컨테이너를 만들었습니다. 따라서 PHP 스크립트를 통해 pgpool2 서버에 연결하려고 하면 다음 오류가 발생합니다.
pg_connect(): PostgreSQL 서버에 연결할 수 없습니다. 서버에 연결할 수 없습니다. 연결이 거부되었습니다.
답변1
나는 아무 관계도 없어루스트어바웃전에는…하지만…
대부분의 기본 구성에서 postgresql은 로컬이 아닌 연결을 허용하지 않습니다. 원격 연결을 허용하려면 pg_hba.conf 파일에 "host" 줄을 추가해야 합니다.
일반적으로 이 파일은 다음과 유사한 위치에 있습니다.
/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 주소는 예시일 뿐이다. 적절하게 변경하십시오.