PostgreSQL 외부접속 허용
1. 설정 파일 찾기
PostgreSQL 에서 외부접속을 허용하기 위해 수정하는 파일명은 "pg_hba.conf" 이다.
ubuntu 의 경우 "/etc/postgresql/11/main/" 같은 곳에 위치할 가능성이 높은데, 버전 번호(11) 정도만 달라진다.
다른 리눅스나 혹은 정확하게 찾아내기 위해서는 먼저 프로세스를 조사해야 한다.
ps -ef | grep postgres
ubuntu에서 명령어 부분만 떼어내면 다음과 같다.
/usr/lib/postgresql/11/bin/postgres -D /var/lib/postgresql/11/main -c config_file=/etc/postgresql/11/main/postgresql.conf
"-c config_file=" 이 붙어 있는 경우는 그 값과 같은 디렉토리(/etc/postgresql/11/main/) 에 "pg_hba.conf" 파일이 있을 가능성이 높지만, postgresql.conf 에 다른 경로(파일이름도 변경할 수 있다)를 지정할 수 있다.
"-c config_file=" 이 붙어있지 않은 경우, "-D" 뒤에 붙어 있는 디렉토리에 "pg_hba.conf" 파일이 있을 가능성이 높지만, 그 디렉토리의 postgresql.conf 에서 다른 설정을 할 수 있다.
2. 설정 파일 편집하기
다음의 내용에서 2번째 줄을 적당히 편집한 다음 복사해서, pg_hba.conf 파일에 추가하면 된다.
# TYPE DATABASE USER ADDRESS METHOD host all all 127.0.0.1/32 md5
DATABASE, USER, ADDRESS 항목을 변경하는 방식이면 된다.
PostgreSQL 이 설치된 서버의 ip 와 127.0.0.1 는 다른 ip 이고, 네트워크 장치 자체가 다르다.
3. 설정 적용하기
3.1. 추천하는 방법
Linux 배포판의 패키지 시스템으로 설치했거나 Linux 배포판의 데몬 관리도구에 등록했다면 그걸 이용하는 것을 추천한다.
ubuntu 에서 다음과 같다.
sudo service postgresql reload
혹은,
sudo systemctl reload postgresql
3.2. 잘 사용되지 않는 방법
SELECT pg_reload_conf();
3.3. 알아서 해야 하는 경우
내부적으로는 pg_ctl reload
라는 명령어가 호출되는데, 파라미터는 ps -ef | grep postgresql
실행결과로부터 예측할 수 있다.