본문 바로가기

DB/PostgreSQL

[ PostgreSQL ] psql - 원격으로 접속하기

반응형

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

요약

  1. postgresql.conf 파일에서 listen_addresses를 수정하여 원격 접속을 허용합니다.
  2. pg_hba.conf 파일에서 원격 접속 클라이언트의 인증 방식을 설정합니다.
  3. 방화벽에서 5432 포트를 열어 원격 접속을 허용합니다.
  4. PostgreSQL 서비스를 재시작하여 변경 사항을 적용합니다.
  5. 원격 클라이언트에서 접속 테스트를 통해 설정이 완료되었는지 확인합니다.

이제 PostgreSQL 서버에 원격에서 접속할 수 있으며, 보안을 위해 꼭 필요한 IP만 허용하는 설정을 추천합니다.

반응형