다른 서버에서 데이터베이스로 액세스 할 수 있도록 pg_hba.conf 파일 구성


15

한 서버에 postgres 데이터베이스가 있고 다른 서버에서 액세스해야합니다.

pg_hba.conf 파일을 편집해야하지만 이제이 파일을 편집하는 단계가 무엇인지 알고 있습니다. 서버 센 토스

파일에 다음 줄을 추가해야합니다

host    all         all         10.0.2.12         255.255.255.255   trust

나는 그것을 찾았다 var/lib/pgsql/data/

이제 기본적 으로이 작업을 수행하는 올바른 단계가 무엇인지 잘 모르겠습니다.

답변:


14

먼저 주어진 pg_hba.conf의 백업 사본을 만듭니다

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

그렇게하면 나사를 풀면 이전 버전이 준비됩니다. tar 아카이브의 좋은 기능은 권한과 디렉토리를 보존한다는 것입니다. 따라서 pg_hba.conf가 인식을 넘어선 경우. 당신은 할 수 있습니다 :

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

이전에 만든 아카이브에서 백업 pg_hba.conf가 복원됩니다.

라인의 실제 삽입에 관해서는 :

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(참고 : 명령이 편집되었습니다. 감사합니다 bortzmeyer!)

해야합니다. 이것은 pg_hba.conf에 행을 추가합니다. 변경해야 할 경우 실제 편집기를 사용해야합니다. vi처럼. 학습 곡선은 약간 가파르지만 최소한 기본 사항을 배우면 대부분의 유닉스 환경에서 매우 안전해야합니다.

이제 트랙으로 돌아 왔으므로 postgresql 데이터베이스를 다시 시작해야합니다. Centos 머신에서 다음과 같이 수행됩니다.

sudo service postgresql restart

또는 다시 시작하지 않고 구성을 다시로드 할 수 있습니다.

su - postgres
pg_ctl reload

이제 10.0.2.12에서 Centos-machines postrgresql 데이터베이스에 액세스 할 수 있어야합니다.


1
권한이있는 작업이 리디렉션으로 수행되므로 sudo로 실행하는 프로그램 (이 경우 에코)이 아니라 쉘이 처리하므로 마지막 명령의 sudo는 작동하지 않습니다.
bortzmeyer

좋은 지적! "echo 'host all all 10.0.2.12 255.255.255.255 trust">> /var/lib/pgsql/data/pg_hba.conf "
pyhimys

이상적인 방법은 관리자 위치에서 버전 제어하에두고 SSH 등을 통해 변경 한 후 배포하는 것입니다.
vfclists

1
pg_hba.conf 파일의 기본 위치는 9.4와 약간 다릅니다. /var/lib/pgsql/9.4/data/pg_hba.conf
Sergey Vlasov

13

postgresql.conf를 편집하고 행을 변경 / 추가하는 것을 잊지 마십시오

listen_addresses = '*'

PostgreSQL은 기본적으로 localhost에서 수신 대기합니다


list_addresses 예제가 너무 관대하지 않습니까? 서버가 공용, 내부, VPN 등 여러 IP에서 실행되는 경우 보안 허점입니다.
vfclists
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.