🔍 들어가며
PostgreSQL 설치 후 외부에서 접속하려고 할 때 connection refused 또는 timeout 에러가 발생하셨다면, 아래 설정을 하나씩 확인해보세요
이 글에서는 리눅스 서버에 설치된 PostgreSQL의 외부 접속을 허용하는 방법을 정리해보았습니다.
✅ 외부 접속 허용을 위한 3단계
1. postgresql.conf 설정
PostgreSQL의 메인 설정 파일에서 외부 IP 접속을 허용해줘야 합니다.
👇 아래와 같이 'listen_addreses'와 'port' 항목을 수정
vi $PGDATA/postgresql.conf
...(생략)...
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)

- localhost → 외부에서는 접속 불가
- * → 모든 IP 허용 (운영환경에서는 제한된 IP만 허용하는 것이 좋음)
2. pg_hba.conf 설정
인증 방식과 허용할 클라이언트 IP를 설정하는 파일입니다.
👇 아래와 같이 #IPv4~ 부분의 IP 수정
vi /var/lib/pgsql/14/data/pg_hba.conf
...(생략)...
# IPv4 local connections:
host all all 0.0.0.0/0 trust
...(생략)...

- 0.0.0.0/0: 모든 외부 IP 허용
(운영환경에서는 특정 IP만 허용 권장: 예 192.168.0.10/32) - md5: 비밀번호 인증 방식
3. 방화벽 설정 (firewalld)
리눅스 방화벽에서 PostgreSQL 포트(기본: 5432)를 열어줘야 합니다.
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
포트 열기 확인:
sudo firewall-cmd --list-ports
🔄 PostgreSQL 재시작
설정을 반영하기 위해 PostgreSQL 서비스를 재시작합니다.
$PG_HOME/bin/pg_ctl -D $PGDATA restart
🧪 접속 테스트
외부 PC나 클라이언트에서 아래 명령어로 접속 테스트를 해봅니다.
psql -h <서버 IP> -U <계정명> -d <DB명>
'🗄️ DB_이야기 > # 🐘 PostgreSQL' 카테고리의 다른 글
| 🐘[PostgreSQL] 유저(User) 생성, 변경, 삭제, 조회 (1) | 2025.08.01 |
|---|---|
| 🐘[PostgreSQL] 기본 명령어 정리 (1) | 2025.08.01 |
| 🐘[PostgreSQL] 환경변수 및 DB 기동/정지 정리 (2) | 2025.07.28 |
| 🐘 [PostgreSQL] 기동 실패 에러: "could not bind IPv4 address" (3) | 2025.07.24 |
| 🐘 [PostgreSQL] 타임라인 에러: "requested timeline is not a child of this server's history" (3) | 2025.07.24 |
