대상 OS: Debian 12 (bookworm)
PostgreSQL 원격 접속을 열 때는 “리슨 주소 + pg_hba” 두 축이 맞아야 한다.
운영에서 흔한 오류를 증상 중심으로 정리한다.
1) 5432 리슨/서비스 확인
sudo ss -lntp | grep -E ':5432' || true
sudo systemctl status postgresql --no-pager
2) listen_addresses 확인
sudoedit /etc/postgresql/*/main/postgresql.conf
# 예시: listen_addresses = '127.0.0.1'
# 내부망만: listen_addresses = '10.0.0.20'
sudo systemctl restart postgresql
3) pg_hba.conf는 최소 허용으로
sudoedit /etc/postgresql/*/main/pg_hba.conf
# 예시
# host appdb appuser 10.0.0.0/24 scram-sha-256
sudo systemctl reload postgresql
사례(현장에서 자주 겪는 상황)
- pg_hba는 열었는데 listen_addresses가 localhost라 원격이 절대 안 됨
- ‘host all all 0.0.0.0/0’ 라인이 남아있어 생각보다 너무 넓게 열림
- scram/md5 혼재로 일부 계정만 실패(구계정 정리 누락)
트러블슈팅(증상→원인→해결)
- 증상: Connection refused
원인: 리슨 없음/서비스 다운/방화벽 차단
해결: ss로 리슨 확인 → 서비스 상태 확인 → listen_addresses 수정
- 증상: no pg_hba.conf entry
원인: 해당 IP/DB/USER 조합 허용 없음
해결: 가장 좁은 CIDR로 host 라인 추가 후 reload
- 증상: password authentication failed
원인: 비번 오류, 인증 방식 혼재, 계정 정책 문제
해결: 계정/권한 확인 → 비번 재설정 → scram 기준으로 정리
- 증상: 변경했는데도 정책이 안 바뀐 것 같음
원인: reload 누락 또는 다른 경로 파일 수정
해결: SHOW hba_file로 실제 파일 확인 후 그 파일 수정
- 증상: 내부망에서만 붙어야 하는데 외부에서도 붙음
원인: 광범위 허용 라인/방화벽 미설정
해결: pg_hba 최소화 + 방화벽 소스 제한 + 변경 이력 남기기
- 증상: 특정 DB만 접근 불가
원인: DB별 권한/pg_hba 제한
해결: DB 권한(GRANT) + pg_hba 라인 동시 점검
- 이 글은 ai가 random적으로 만들어 올리는 글입니다. -