티스토리 뷰
또 다시 새로운 걸 들고 돌아온 나다. 진행 중인 프로젝트는 뷔폐에서 남긴 접시만큼 쌓여가지만, 언제나 그렇듯 다른 뭔가는 더 맛있겠지 하며 새 접시를 들고 간다...
(올해 말에 잔반 처리를 좀 해야하긴 하겠다..)
오늘은 Homebrew를 이용해 내 M4 맥북에 PostgreSQL을 설치하고, 세팅하고, 마주쳤던 오류들을 해결한 과정을 기록해 보려고 한다.
1. Homebrew로 PostgreSQL 설치
가장 먼저 할 일은 역시나 Homebrew를 통해 PostgreSQL을 설치하는 것이다. 특정 버전을 사용하기 위해 @를 붙여 명시적으로 설치를 진행했다.
brew install postgresql@17
터미널에 위 명령어를 입력하면 Homebrew가 알아서 최신 버전의 PostgreSQL(현재 17)을 설치해 준다. 여기까지는 아주 순조롭다.
2. 데이터베이스 초기화 (initdb)
설치만 하면 끝인 줄 알았는데, PostgreSQL은 데이터를 저장할 공간을 만들어주는 '초기화' 과정이 필요했다. initdb 명령어를 사용해 데이터베이스 클러스터라는 것을 생성해 줘야 한다.
initdb -D /opt/homebrew/var/postgresql@17
-D 옵션은 데이터베이스 파일들을 저장할 디렉토리를 지정하는 옵션이다. Homebrew로 설치 시 위 경로가 기본 경로가 된다.
(Intel Mac의 경우 /usr/local/var/postgresql@17 이다.)
3. 서버 실행 및 자동 시작 등록
이제 데이터베이스 서버를 켤 차례. 매번 컴퓨터를 켤 때마다 직접 켜주기는 귀찮으니, brew services를 이용해 컴퓨터가 켜질 때마다 자동으로 실행되도록 등록해 주자.
# 서버 시작 및 자동 실행 등록
brew services start postgresql@17
# 서버가 잘 켜졌는지 상태 확인
brew services list
postgresql@17의 상태가 started로 나오면 성공이다. 참고로 중지하고 싶을 땐 brew services stop postgresql@17을 사용하면 된다.
4. 접속 및 프로젝트용 DB/User 세팅
서버도 켰으니 이제 접속해서 프로젝트에 사용할 전용 유저와 데이터베이스를 만들어보자. 최고 관리자로 모든 걸 다 하는 건 좋지 않은 습관이니까.
# 1. 기본 DB에 최고 관리자로 접속
psql postgres
# 2. 접속 확인 후 \q로 나가기, 프로젝트 전용 유저 생성 및 비번 설정
createuser --interactive
# -> 이름 물어보면 example_user 입력, 슈퍼유저 여부 물어보면 n 입력
# 3. terminal 프로젝트 전용 DB 생성
createdb -O example_user exampleDB
# 4. psql 접속 후, 사용자 비밀번호 설정
\password example_user
# -> 사용할 비밀번호 두 번 입력
5. 내가 마주했던 오류들 (삽질 로그)
역시나 순탄하게만 흘러가진 않았다. 내가 마주했던 두 가지 큰 오류와 해결 과정을 정리해 본다.
오류 1: zsh: command not found: initdb
가장 먼저 나를 반긴 건 initdb 명령어를 찾을 수 없다는 메시지였다. 분명히 설치를 했는데?
- 원인: Homebrew가 postgresql@17처럼 버전을 명시해서 설치한 경우, 다른 버전과의 충돌을 막기 위해 실행 파일들을 공용 경로가 아닌 자신만의 독립적인 경로에만 설치한다. 셸(zsh)이 이 독립적인 경로를 알지 못해서 발생하는 문제였다.
- 해결: postgresql@17의 실행 파일이 있는 정확한 경로를 ~/.zshrc 파일에 추가해주고, source 명령어로 바로 적용시켜주니 해결됐다.
-
Bash
# 1. postgresql@17의 정확한 bin 경로를 .zshrc에 추가 echo 'export PATH="$(brew --prefix postgresql@17)/bin:$PATH"' >> ~/.zshrc # 2. 변경사항 바로 적용 source ~/.zshrc
오류 2: initdb: 오류: ... 디렉터리가 있지만 비어 있지 않음
경로 문제를 해결하고 다시 initdb를 실행하니 이번엔 디렉토리가 비어있지 않다는 오류가 발생했다.
- 원인: initdb는 '완전히 비어있는' 디렉토리에만 실행할 수 있다. 이전에 command not found 상태에서 여러 번 명령을 시도하는 과정에서 디렉토리가 생성되고 일부 파일이 남아있었던 것으로 보인다.
- 해결: 가장 깔끔한 방법은 기존 디렉토리를 완전히 삭제하고 다시 시도하는 것이다.
-
Bash
# 1. 혹시 모르니 서비스가 실행 중이라면 중지 brew services stop postgresql@17 # 2. 문제가 되는 디렉토리 완전 삭제 rm -rf /opt/homebrew/var/postgresql@17 # 3. 다시 초기화 진행 -> 성공! initdb -D /opt/homebrew/var/postgresql@17
이렇게 PostgreSQL 설치와 트러블슈팅 과정을 정리해 보았다.
이제 다시 새 접시에 맛있는 음식을 담으러 가자.
끝!
'Database' 카테고리의 다른 글
| [Oracle Tunning] Join (1) | 2024.08.28 |
|---|---|
| [Oracle Tunning] 인덱스 활용과 튜닝 (0) | 2024.08.28 |
| [Oracle Tunning] INDEX Scan 방식 (0) | 2024.08.28 |
| [Oracle Tunning] INDEX 기본 (1) | 2024.08.28 |
| [Oracle Tunning] DBMS_XPLAN.DISPLAY_CURSOR (0) | 2024.08.28 |
- redux-thunk
- redux
- 정보보안기사 #실기 #정리
- 맛집
- 인천 구월동 맛집
- react-native
- javascript
- Promise
- 이탈리안 레스토랑
- 파니노구스토
- Async
- await
- AsyncStorage
- 인천 구월동 이탈리안 맛집
- react
- Total
- Today
- Yesterday