PostgreSQL 서버에 원격 클라이언트에서 접속할 수 있도록 설정하려면 다음 단계를 통해 PostgreSQL 서버와 방화벽 설정을 조정해야 합니다.
1. PostgreSQL 설정 파일 수정
PostgreSQL은 기본적으로 로컬 접속만 허용하므로, 원격 접속을 허용하려면 설정 파일 두 가지를 수정해야 합니다:
postgresql.conf
: 서버가 수신할 IP 주소를 설정합니다.pg_hba.conf
: 원격 접속 클라이언트의 인증 방식을 설정합니다.
1.1 postgresql.conf
에서 listen_addresses
수정
postgresql.conf
파일을 열어 listen_addresses
값을 수정하여 원격 접속을 허용합니다.
# PostgreSQL 설정 파일 열기 (보통 /etc/postgresql/ 버전 /main/postgresql.conf에 위치합니다)
sudo vi /etc/postgresql/15/main/postgresql.conf
이 파일에서 listen_addresses
설정을 찾은 다음, 값을 변경합니다:
# listen_addresses 설정 변경
listen_addresses = '*'
'*'
로 설정하면 모든 IP 주소에서의 접속을 허용하며, 특정 IP에서만 접속을 허용하고 싶다면 해당 IP 주소를 입력할 수 있습니다.
1.2 pg_hba.conf
에서 클라이언트 인증 설정
pg_hba.conf
파일을 열고, 원격 접속 클라이언트의 인증 방식을 설정합니다.
# pg_hba.conf 파일 열기
sudo vi /etc/postgresql/15/main/pg_hba.conf
파일 맨 아래에 다음 줄을 추가하여 모든 IP 주소 대역에서의 접속을 허용하고, md5
방식으로 비밀번호 인증을 요구하도록 설정합니다:
# IPv4 원격 접속 허용 설정
host all all 0.0.0.0/0 md5
host
: TCP/IP를 통해 접속을 허용한다는 의미입니다.all
: 데이터베이스 이름과 사용자 이름에 대해all
을 지정하여 모든 사용자와 데이터베이스에 대해 접속을 허용합니다.0.0.0.0/0
: 모든 IPv4 주소에서의 접속을 허용한다는 의미입니다. 특정 IP 대역을 허용하려면 해당 대역을 지정할 수 있습니다.md5
: 비밀번호 기반 인증 방식으로, 접속 시 비밀번호를 요구합니다.
2. 방화벽 설정 (포트 5432 열기)
기본적으로 PostgreSQL은 5432 포트를 사용합니다. 방화벽에서 해당 포트를 열어 원격 접속을 허용합니다.
2.1 ufw
방화벽 설정 (Ubuntu)
Ubuntu에서 ufw
를 사용하는 경우, 다음 명령어를 통해 5432 포트를 엽니다.
sudo ufw allow 5432/tcp
sudo ufw reload
2.2 firewalld
방화벽 설정 (CentOS, RHEL)
CentOS 또는 RHEL에서 firewalld
를 사용하는 경우, 다음 명령어로 5432 포트를 열 수 있습니다.
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
3. PostgreSQL 서비스 재시작
설정을 완료한 후, PostgreSQL 서비스를 재시작하여 변경 사항을 적용합니다.
# Ubuntu 및 대부분의 배포판
sudo systemctl restart postgresql
# CentOS 및 RHEL의 경우 PostgreSQL 버전에 따라 명령이 다를 수 있음
sudo systemctl restart postgresql-15
4. 원격 접속 테스트
원격 클라이언트에서 psql
을 사용하여 PostgreSQL 서버에 접속을 시도합니다.
psql -h 서버_IP주소 -U 사용자이름 -d 데이터베이스이름
예를 들어, PostgreSQL 서버의 IP가 192.168.1.100
이고, 사용자 이름이 postgres
일 경우:
psql -h 192.168.1.100 -U postgres -d postgres
요약
postgresql.conf
파일에서listen_addresses
를 수정하여 원격 접속을 허용합니다.pg_hba.conf
파일에서 원격 접속 클라이언트의 인증 방식을 설정합니다.- 방화벽에서 5432 포트를 열어 원격 접속을 허용합니다.
- PostgreSQL 서비스를 재시작하여 변경 사항을 적용합니다.
- 원격 클라이언트에서 접속 테스트를 통해 설정이 완료되었는지 확인합니다.
이제 PostgreSQL 서버에 원격에서 접속할 수 있으며, 보안을 위해 꼭 필요한 IP만 허용하는 설정을 추천합니다.
'DB > PostgreSQL' 카테고리의 다른 글
[ PostgreSQL ] \dt, \d - 테이블 리스트, 테이블 schema 알아보기 (1) | 2024.10.07 |
---|---|
[ PostgreSQL ] - 데이터 베이스 생성하고 삭제하기 (1) | 2024.10.07 |
[ PostgreSQL ] PostgreSQL 설치하고 원격으로 접속하기 - CentOS (0) | 2024.10.06 |
[ PostgreSQL ] 개발 역사와 버전에 대해서 알아보기 (0) | 2024.10.06 |
[ PostgreSQL ] PostgreSQL 설치하기 - Ubuntu (0) | 2024.09.14 |