오퍼링 > 소프트웨어 테크놀로지 서비스 > 오픈소스 SW > DBMS > 자료실

오픈소스 SW 자료실 - DBMS

오픈소스 DBMS 관련 기술서비스 정보 및 자료를 제공합니다.

[FAQ/PostgreSQL] PostgreSQL 실행 후, 외부에서 접속하려면 어떻게 해야 하나요?

2021.02.05

Question


PostgreSQL 을 서버에서 실행 후, 동작 확인까지 끝냈습니다. 하지만, 외부에서 접속하려 하니 접근 에러가 발생합니다.

이런 경우 어떻게 해야 하나요?




 

Answer


PostgreSQL 은 허락되지 않은 외부 접속 시도는 모두 거절하도록 설정되어 있습니다.

클라이언트 접속 인증은, 생성된 DB 디렉토리 에 있는 pg_hba.conf 파일로 제어됩니다. 여러가지 타입의 연결 설정을 지정할 수 있는데, 여기서는 일반적인 TCP/IP 를 사용한 연결을 설명드리겠습니다.

형식은 다음과 같습니다.

클라이언트 접속 인증은, 생성된 DB 디렉토리 에 있는 pg_hba.conf 파일로 제어됩니다. 여러가지 타입의 연결 설정을 지정할 수 있는데, 여기서는 일반적인 TCP/IP 를 사용한 연결

위의 파라미터의 각각의 정보는 아래와 같은 의미를 가집니다.

- host는 TCP/IP 타입이라는 의미입니다.
- database 에는 연결을 허락할 데이터베이스의이름을 적어주시면 됩니다.
- user 는 연결에 사용할 사용자 이름, address는 클라이언트의 IP 주소를 적습니다. IP 주소 대역을 지정할 수도 있습니다.
- auth-method 에는 인증 방법을 적습니다. trust(연결 허락), reject(연결 거부)를 비롯해 암호화 인증 방법을 지정할 수도 있습니다.
- auth-options 에는 암호화 인증 방법에 따라 추가될 옵션을 설정합니다.

예를 들어 보겠습니다.

모든 사용자('all')가 192.168.93.x IP 대역대에서 postgres라는 이름을 가진 데이터베이스에 대해 연결하는 것을 허락

첫번째는 모든 사용자('all')가 192.168.93.x IP 대역대에서 postgres라는 이름을 가진 데이터베이스에 대해 연결하는 것을 허락한다는(trust) 의미입니다.
두번째는 사용자나 데이터베이스에 관계없이 example.com 라는 도메인에서의 접근은 모두 차단한다는(reject) 의미입니다.

위와 같이 필요한 만큼 추가해서 사용할 수 있습니다.
pg_hba.conf 파일을 수정한 후에는, 서버를 재시작하거나 'pg_ctl -D ${PG_DATA_DIRECTORY} reload' 명령을 통해 config 재인식이 필요합니다.

더 자세한 내용은 PostgreSQL 공식 가이드의 pg_hba.conf 파일 항목을 참고해 주시기 바랍니다.