sm-English-Coding 님의 블로그

"아직도 삽질 중?" PostgreSQL 설치 시 Permission 에러 1분 만에 해결하는 법 본문

개발

"아직도 삽질 중?" PostgreSQL 설치 시 Permission 에러 1분 만에 해결하는 법

smEnglishCoding 2026. 1. 19. 10:52

윈도우에서 PostgreSQL을 설치하다 보면  
“cluster initialisation failed”, “Permission denied” 같은 오류로 설치가 중단되는 경우가 많다.

이 글은 PostgreSQL 17~18(EDB installer) 설치 과정에서 발생하는  
데이터 디렉터리 권한 문제, 잔여 폴더 문제로 인한 오류 원인과  
가장 빠르게 해결되는 방법을 정리한 글이다.

  • Problem running post-install step
  • The database cluster initialisation failed
  • initdb: error: could not create directory ... Permission denied

특히 PostgreSQL 17~18 윈도우 설치(EDB installer)에서 데이터 디렉터리 권한/잔여 폴더/비어있지 않은 폴더 때문에 자주 터진다. 실제로 PostgreSQL 18은 2025-09-25 정식 릴리스됐고, 이후 18.1(보안/버그 픽스)이 2025-11-13에 배포됐다. 가능하면 최신 마이너 버전(예: 18.1) 설치 파일을 쓰는 게 기본이다.


1) 원인 1순위: “데이터 폴더가 비어있지 않음”

설치 마법사에서 지정한 Data directory 안에 파일이 조금이라도 있으면(숨김 포함) 초기화가 실패할 수 있다. EDB 쪽 공식 트러블슈팅에도 “데이터 디렉터리는 반드시 비어 있어야 한다”가 핵심으로 나온다.

해결

  • Data directory를 ‘완전 빈 폴더’로 새로 만들기
    • 예: F:\pgdata\18\data (이렇게 단계적으로)
  • 드라이브 루트에 바로 잡지 말기
    • F:\ 루트는 시스템 폴더/권한 이슈로 꼬일 확률이 올라간다.
  • 폴더 안에 뭐가 남아있으면 그냥 지우거나(데이터 필요 없을 때), 다른 새 폴더로 경로 변경

2) 원인 2순위: 재설치했는데 “옛날 data 폴더”가 남아있음

PostgreSQL 삭제(제어판 제거) 후에도 data 디렉터리가 남는 경우가 있다. 그러면 재설치에서 권한(icacls) 바꾸는 단계에서 실패하거나, 초기화 단계에서 그대로 죽는다.

해결(데이터 백업 필요 없다는 전제)

  1. 제어판에서 PostgreSQL 제거
  2. 아래 폴더가 남아있으면 수동 삭제
    • C:\Program Files\PostgreSQL\ (또는 설치한 경로)
    • 설치 때 지정했던 Data directory 폴더
  3. 다시 설치

데이터가 필요하면 삭제 전에 반드시 백업(덤프)부터 해야 함.


3) 원인 3순위: Program Files / 권한 문제로 initdb가 폴더 생성 못함

윈도우에서 C:\Program Files\... 아래에 data 폴더까지 같이 두면, 설치 과정에서 권한이 꼬여 initdb가 디렉터리 생성에 실패하는 케이스가 있다(“Permission denied”).

추천 설치 구조(가장 덜 삽질)

  • 프로그램(바이너리): 기본값 유지
    • 예: C:\Program Files\PostgreSQL\18\
  • 데이터(클러스터): 별도 드라이브/폴더로 분리
    • 예: F:\pgdata\18\data 또는 C:\pgdata\18\data

이 조합이 “설치 성공률”이 제일 높다.


4) “설치 폴더 통째로 F드라이브로 옮겨도 됨?” → 웬만하면 금지

설치 후에 C:\Program Files\PostgreSQL\18 폴더를 통째로 다른 드라이브로 옮기면:

  • 서비스 등록 경로
  • 레지스트리
  • 설정/라이브러리 경로
    이런 게 다 꼬여서 나중에 더 크게 터질 확률이 높다.

경로를 바꾸고 싶으면
✅ 처음부터 다시 설치하면서 “프로그램 경로 / 데이터 경로”를 원하는 곳으로 잡는 게 정석.


5) 설치 옵션에서 자주 묻는 것들 (빠른 결론)

  • Port 5432? → 보통 그대로(5432) 쓰면 됨. 충돌 중이면 다른 포트.
  • Cluster default? → 그냥 기본 개념상 “데이터 디렉터리 = 클러스터”라서, 경로만 잘 잡으면 OK.
  • Stack Builder 중요함? → 당장 필수 아님. PostGIS 같은 추가 구성요소는 나중에 설치 가능. (PostGIS 번들도 PostgreSQL 13~18 윈도우용이 제공되는 흐름)

6) 설치가 됐는지 30초 확인

설치 끝났으면 CMD에서:

 
psql --version

그리고 접속 테스트:

 
psql -U postgres -h localhost -p 5432

여기서 비번 물어보고 들어가면 일단 설치/서비스는 정상.


마무리: 설치 오류 날 때 제일 빨리 해결되는 루트

  1. Data directory를 “완전 빈 새 폴더”로 지정
  2. Program Files에는 바이너리만, data는 C:\pgdata나 F:\pgdata 같은 별도 경로
  3. 재설치면 기존 data 폴더 잔재 삭제

이 3개만 지켜도 “cluster initialisation failed” 류는 대부분 끝난다.