PostgreSQL 서버 주요 파일 및 기능
Source: Dev.to

1️⃣ postgresql.conf — 서버 일반 설정
PostgreSQL의 중앙 설정 파일입니다. 다음을 제어합니다:
- 서버 포트(
port) - 네트워크 인터페이스(
listen_addresses) - 메모리(
shared_buffers,work_mem,maintenance_work_mem) - 로그
- Autovacuum
- WAL(Write‑Ahead Log)
- 복제
- 성능 파라미터
port = 5432
listen_addresses = '*'
shared_buffers = 256MB
log_min_duration_statement = 1000
📌 서버 전체 동작을 변경하고 싶을 때는 바로 여기서 수정합니다.
2️⃣ pg_hba.conf — 접근 제어 및 인증
HBA는 Host‑Based Authentication의 약자입니다. 어떤 사용자가 어느 IP에서, 어떤 데이터베이스에, 어떤 인증 방식을 사용할지 정의합니다.
전형적인 구조:
TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.1.0/24 md5
주요 메서드:
trust→ 비밀번호 없이 접속 (안전하지 않음)md5→ 암호화된 비밀번호 (구식)scram-sha-256→ 최신 권장 방식peer→ 운영체제 인증 사용
📌 보안 및 접근과 관련된 내용이라면 즉시
pg_hba.conf를 떠올리세요.
3️⃣ pg_ident.conf — 사용자 매핑
운영체제 사용자와 PostgreSQL 사용자를 매핑합니다. peer 또는 ident 인증과 함께 사용됩니다.
개념 예시:
map_name linux_user postgres_user
IP나 비밀번호를 제어하지 않으며, 오직 신원만 매핑합니다.
4️⃣ postgresql.auto.conf — ALTER SYSTEM을 통한 설정
다음 명령을 실행하면 자동으로 생성됩니다:
ALTER SYSTEM SET work_mem = '64MB';
주요 특징:
- PostgreSQL이 자동으로 관리
postgresql.conf값을 덮어씀- 수동으로 편집해서는 안 됨
5️⃣ .pgpass — 클라이언트 비밀번호 파일
서버가 아닌 클라이언트 머신에 위치합니다. 자격 증명을 저장해 매 연결 시 비밀번호 입력을 생략할 수 있게 합니다.
형식:
hostname:port:database:username:password
⚠️ 파일 권한은
0600이어야 합니다. 그렇지 않으면 보안상의 이유로 무시됩니다.
6️⃣ 데이터 디렉터리(data/)
데이터 디렉터리 안에는 다음이 포함됩니다:
- 테이블의 물리 파일
- WAL(트랜잭션 로그)
- 시스템 카탈로그
- 내부 제어 파일
이 디렉터리 내부 파일을 수동으로 수정하지 마세요.
전략적 요약
| 파일 | 주요 기능 | 초점 |
|---|---|---|
postgresql.conf | 일반 설정 | 성능 및 동작 |
pg_hba.conf | 접근 제어 | 보안 |
pg_ident.conf | 사용자 매핑 | OS와의 통합 |
postgresql.auto.conf | 자동 설정 | ALTER SYSTEM |
.pgpass | 클라이언트 비밀번호 | 자동화된 연결 |