| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 프론트엔드
- 앱개발
- 영어회화
- 회화표현
- 직장인영어
- 미국인아내
- 원어민영어
- 영어공부
- 클린코드
- 신입개발자
- react
- 비즈니스영어
- 원어민표현
- 신입개발자실무
- 개발자영어
- 주니어개발자
- 생활영어
- 실전영어회화
- MariaDB
- 프로그래밍영어
- 플러터에러
- 영어표현
- 미국여행꿀팁
- Flutter
- 미국여행
- Next.js
- 플러터
- 미국생활
- 해외여행준비
- app router
- Today
- Total
sm-English-Coding 님의 블로그
"아직도 삽질 중?" PostgreSQL 설치 시 Permission 에러 1분 만에 해결하는 법 본문
윈도우에서 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) 바꾸는 단계에서 실패하거나, 초기화 단계에서 그대로 죽는다.
해결(데이터 백업 필요 없다는 전제)
- 제어판에서 PostgreSQL 제거
- 아래 폴더가 남아있으면 수동 삭제
- C:\Program Files\PostgreSQL\ (또는 설치한 경로)
- 설치 때 지정했던 Data directory 폴더
- 다시 설치
데이터가 필요하면 삭제 전에 반드시 백업(덤프)부터 해야 함.
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에서:
그리고 접속 테스트:
여기서 비번 물어보고 들어가면 일단 설치/서비스는 정상.
마무리: 설치 오류 날 때 제일 빨리 해결되는 루트
- Data directory를 “완전 빈 새 폴더”로 지정
- Program Files에는 바이너리만, data는 C:\pgdata나 F:\pgdata 같은 별도 경로
- 재설치면 기존 data 폴더 잔재 삭제
이 3개만 지켜도 “cluster initialisation failed” 류는 대부분 끝난다.
'개발' 카테고리의 다른 글
| Flutter는 왜 처음에 이렇게 헷갈릴까? (0) | 2026.01.21 |
|---|---|
| Flutter 처음 시작할 때 다들 헷갈리는 개념 정리 (1) | 2026.01.20 |
| Python typing Optional / Union 사용법 정리 (None 처리 헷갈릴 때) (0) | 2026.01.16 |
| Python dataclass 사용법 정리: init 없이 클래스 만드는 이유 (0) | 2026.01.15 |
| 머신러닝 개념 한 번에 이해하기: 규칙을 직접 짜지 않는 이유 (0) | 2026.01.13 |