본문 바로가기
우당탕탕 풀스택 도전기

[DB] PostgreSQL 설치하기

by 림졍 2025. 5. 12.
728x90
반응형

 

반갑다!!!!!!!

 

오랜만입니다 열어분. 돌아온 림졍입니둥.

수료하고 나서 면접도 우다다 보러 다니고 인턴도 하고,

네.. 취업 준비 열심히 하고있는 하우스키퍼가 되었습죠. ㅇㅅaㅇ

 

업무를 진행하다보니 API 명세도 짜보게 되고

그러다가 서버에 어떻게 들어가는지 보다 자세하게 알게 되면서

어라. 백엔드도... hoxy? 라는 정말 림졍다운 crazy한 생각이 들었단 말이죠..

그래서 가장 익숙한 언어(?)로 개발하는 Node.js부터 공부해보기로 결심을 하면서..

네 뭐 그렇게 얼레벌레 풀스택 도전.. 을시작하게 되었습니다.

 

사실 JS만 알면 Node.js는 바로 시작할 수 있는줄 알고

“아 이거면 진입장벽 없겠다~ 금방 익히고 도망(?)가자~” 싶었지만?

아니… 생각보다 깔아야 할 것도 많고… 배워야 할 것도 생각보다 훨씬 많았다는거.. 🥲

(역시 오만한 림졍에겐 철퇴가 답.)

 

여튼 프론트엔드 반년 조금 넘게 배운 림졍의 얼레벌레 풀스택 도전기는...

종종 찾아뵙겠습니다.. (근데 글쓰는 이유의 80프로는 개발하다가 머리 깨져서 돌아온거임.)

오늘도 맨땅에 헤딩하는 림졍과 한방에 잘되는 꼴이 없는 맥북과의 전쟁.. 기대해도 좋습니다.

 

레츠고.

 

우당탕탕 PostgreSQL 설치기

전 분명... 설치만 했어요...

 

진짜 혼란스러웠지만요...

 

 

1. EDB(EnterpriseDB) 링크로 다운로드

 

우선 PostgreSQL을 설치해보고자 홈페이지에서 설치부터 시작했다.

설치 관련 자세한 설명은 솔직-히 블로그에 다 나와서 생략하겠다.

(귀찮은 거 절대아님.. 암튼 그럼;;)

 

+) 혹시몰라 남겨보는 설치링크 ( 바로가기 )

뭔가.. 많이 깔렸네

여튼 모든 패키지를 깔다보면 위처럼 나오게 된다.

(일단.. 뭐 그렇다. 자세한 내용들은 차츰 찾아보며 알아가보도록 하겠다.)

 
 

2. brew install postgresql (Homebrew로 설치)

 

알고보니 macOS는 대부분 Homebrew를 통해 설치한다고 한다….

(순간 1번처럼 설치하고 나서 잘못 설치한 줄 알고 좀 많이 놀랬었다.)

설치방법은 1번보다 더 간단하다. 아래의 명령어를 터미널에 입력해주기만 하면 된다.
(아니 너무 간단한거 아닌가요;;;)

그냥 postgresql을 입력하면 14.6이 설치되니 원하는 버전이 있다면 @(설치할 버전의 숫자) 를 입력해주면 된다.

ex) 16ver를 설치하려면 postgresql@16 을 입력해주면 된다!

 

- 설치 명령어

brew install postgresql@16

대충 이렇게 나옵니다요

 

설치하고 나면 아래에 다음과 같은 명령어가 나오게 되는데, 환경변수 설정을 위한 것이니, 한번 해주도록 하자.

echo 'export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

 

+) 그 외 명렁어 모음집

# 설치가 잘 된것을 확인하는 명령어

postgres --version
(또는)
psql --version

 

# 실행하고싶다? 아래의 명령어를 입력하면.. 놀랍게도 끝난다.

brew services start postgresql@(숫자)

 

 

3. 갑자기 터진 오류사마...

 

설치도 다 했겠다, 실행을 위해 터미널에서 명령어를 입력하고 행복한(?) 코딩을 시작하려고 했는데..

띠용?

갑자기 오류가 나버리고 만 것이다..!

 

원인을 찾아보기에는 관련 지식이 없는 림졍은.. 우선 블로그들을 탐색해서 찾아보기 시작했다.

다행히 같은 M1을 사용하시는 다른 분이 계셔서 해당 블로그를 참고하였다. ( 출처 - 바로가기 )

대부분의 문제로 언급된다는 파일 삭제 명령어를 입력해서 적용을 시도해 보았지만...

rm -rf /opt/homebrew/var/postgres/postmaster.pid

(변화 없움.)

놀랍게도 되지 않았다… (왜!!!!!)

아 저한테 왜이러시냐고요...

 

너무 당황한 나머지…

어… 이게 아니면 뭐지.. 하고 사이트를 뒤적거리며 해결법을 찾다가

나랑 같은 케이스의 문제를 해결한 사람의 글을 발견하게 되는데.. ( 출처는 여기에 )

(대충 재시작하면 된다는 이야기)

그렇다. 재시작을 하면 된다고 한다..

엥 이게 된다고? 라는 생각에 반신반의하며 아래의 명령어 입력을 통해 재시작을 진행했는데

brew services restart postgresql@16

 

진짜 되네;;;;;;;

(그렇게 트러블 슈팅은 허무하게 끝난줄 알았다...)

 

 

4. EDB vs Homebrew 충돌의 진실

 

가장 가능성이 높은 원인은 EDB 버전과 Homebrew를 통해 설치한 버전 간 충돌이라고 생각한다.

PostgreSQL은 EDB 공식 설치 프로그램이나 Homebrew를 통해 설치할 수 있는데,

이 두 가지 방식은 서로 다른 디렉토리 경로랑 설정 파일을 사용한다.

그래서 psql 같은 명령어를 입력할 때 어떤 설치 버전을 참조할지 헷갈리거나,

서로 다른 프로세스가 충돌하면서 실행 오류가 날 수 있다는 것이다!

특히 Homebrew로 설치한 PostgreSQL을 brew services start 명령어로 실행할 때,

이미 다른 버전이 백그라운드에서 돌아가고 있으면 postmaster.pid 파일이 남게 되어

충돌로 인해 문제를 일으킨 걸로 보인다.

(이 파일은 PostgreSQL 서버의 현재 상태를 기록하는 파일인데,

서버가 비정상 종료됐을 때 삭제되지 않고 남아 있을 수 있다고.)

결국 brew services restart로 서비스를 재시작하면서 엉켜 있던 프로세스나 설정을 초기화했고,

그 덕분에 정상적으로 동작하게 된 것 같다.

 

간단하게 정리하면.. 동시에 두 개 깔지 말기.

  • EDB랑 Homebrew는 설정 경로, 실행 위치, 권한이 전부 다름
  • 둘 다 설치하면 시스템이 헷갈려서 어디를 실행해야 할지 모름
  • postmaster.pid는 비정상 종료될 때 지워지지 않아서 생기는 충돌

그래서 어떤 것을 쓸지 고민했는데..

완전 처음써보는 초짜한테는 GUI 기반인 EDB로 설치한 친구가 더 편리하지만

나는 깃 커밋들도 걍 터미널로 뚱땅뚱땅 사용하고 있어서.. 뭐랄까.. 명령어 입력에는 터미널이 조금 더 편하긴 해서

Homebrew 기반에 GUI 툴인 pgAdmin만 별도로 다시 깔아서 적용하는 합의점을 찾게되었다고~

 

이것이 진정한 하이브리드...겠지?

 

 

5. 다시 찾아온 선택의 갈림길 (Brew냐 Docker냐...)

 

이렇게 EDB와 Homebrew를 오가며 고군분투한 끝에, 나름의 하이브리드(?) 전략을 세웠지만..?

배포를 위해 Docker도 좋다는 소리를 들어버린 팔랑귀는 또 다시 선택의 기로에 놓이게 되었다..

둘 중 어느 것을 사용해야 할지 모르겠어서.. 우선 정리를 해봤다.

  • Brew로 설치한 PostgreSQL: Mac 시스템 안에 깔림 (로컬 관리 편함)
  • Docker PostgreSQL: 컨테이너 격리 환경, 배포할 때도 그대로 활용 가능

대충 표로 정리하면 아래와 같다.

  Brew PostgreSQL Docker PostgreSQL
설치 위치 Mac 시스템 직접 설치 Docker 컨테이너 격리 환경
관리 방법 brew services start/stop docker run/start/stop
포트 문제 Mac 기본 포트(5432) 포트 자유롭게 매핑 가능
배포 확장성 Mac에서만 세팅 서버/배포까지 확장 가능

 

개발 전용으로는 Brew도 충분히 편하지만 배포까지 고려한다면

Docker의 PostgreSQL이 깔끔하고 확장성이 좋다는 것을 알 수 있다.

나의 경우 Docker를 통한 프로젝트 배포까지도 나중에 시도해보고 싶었기 때문에 Docker PostgreSQL를 적용해보기로 한다.

그래서 Brew로 설치한 PostgreSQL은 아래의 명령어를 통해 깔끔하게(?) 삭제과정을 거쳤다.

brew services stop postgresql@17
brew uninstall postgresql@17
rm -rf /opt/homebrew/var/postgresql@17
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql@17.plist

 

(이때까진 몰랐다.. 제대로 끝난줄 알았거늘.. )

 

 

6. 포트를 점령한 정체불명의 PostgreSQL?

 

터미널에서 docker를 통한 postgres를 실행하던 중

docker run -p 5432:5432 postgres

 

갑자기 아래와 같은에러가 터져부렀다.

docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5432

 

? 뭐야? 누가 5432를 쓰고 있다고??

(분명 brew로 설치된 postgres를 전부 uninstall 한 상태였는데..)

우선 누가 5432 포트를 사용하는지 확인하기 위해 아래의 명령어를 입력했다.

lsof -i :5432

 

그런데 어라.. 아예 안나오는 것이었다… (순간 뇌정지가 와버림.)

부운명 입력하면 나온다는데…

따라서 다른 명령어를 통해 알아보기로 한 림졍. 아래의 명령어를 입력해주기로 한다.

sudo lsof -nP -iTCP:5432 | grep LISTEN

 

(내 인생에 sudo를 사용하는 날은 얼마 없을거라 믿었는데..)

 

명령어 입력 후, 비밀번호(컴퓨터 비밀번호)를 입력하면 아래와 같이 결과값이 나온다.

postgres 568 postgres    7u  IPv6 ... TCP *:5432 (LISTEN)
postgres 568 postgres    8u  IPv4 ... TCP *:5432 (LISTEN)

 

그렇다. brew로 지웠다고 생각한 PostgreSQL이 아직 살아있었던 것.

따라서 해당 프로세스를 종료하여 포트를 깔끔하게 비워주기로 한다.

 

 

 

7. Docker로 PostgreSQL 설치 시도

 

Docker Desktop에서 띄울 수도 있지만..

gui로 이것저것 누르기 귀찮아서.. 터미널에서 PostgreSQL 컨테이너를 바로 띄웠다.

docker run --name some-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD="비밀의 시크리또" \
-e POSTGRES_DB="side_project_db" \
-p 5432:5432 \
-v postgres-data:/var/lib/postgresql/data \
-d postgres:17

 

이후 컨테이너가 잘 뜨고 있는지 아래의 명령어로 확인해보았다.

docker ps

마참내!!

 

 

 

8. Docker PostgreSQL 접속 및 DB 확인

 

명령어로 입력된 DB가 잘 들어갔는지 확인하기 위해 바로 터미널에 접속해봤다.

psql -h localhost -p 5432 -U postgres

 

비밀번호 입력 후, 접속하게 되면 아래처럼 나오게 되는데,

자 여기서 어떻게 하냐면..요

postgres=# 옆에 \l 를 입력하면

표처럼 뭐가 나오게 될 것인데, 거기서 db이름과 잘 들어갔는지 확인이 가능하다.

이후 (END) 라고 나오면 q 눌러서 나오면 끝.

아예 나가고 싶다면 \q를 입력해주면 된다!

 

 

9. 오늘의 결론

 

처음에는 "설치야 금방 하겠지"라고 가볍게 생각했지만,

오히려 설치와 세팅 과정에서 DB와 포트, 시스템 프로세스에 대한 기본 개념을 확실히 잡을 수 있었다.

특히 PostgreSQL은 같은 버전이라도 설치 방식이 다르면 관리 방식이 완전 달라진다는 걸 배웠다.

 

결론적으로는 두가지를 배우고 가는 이번 시간이었다.

  • 하나의 방식만 확실히 잡고 가자!
  • 배포까지 생각하면 Docker로 연습하자!

오늘도 고생한 나를 칭찬하며… 기록 끝! ^-^)b

 
 

마무리 - 드디어 프로젝트 시작(?)

 

현 상황 ㅋㅋㅋㅋㅋㅋㅋ

 

머릿속에 있는 나만의 서비스를 풀스택으로 구축하기 위해

다양한 테스트도 실행해보고, 페이지 디자인도 이것저것 레퍼런스도 찾아보면서 작업중인데

기획이랑 서비스 어떻게 만들지도 중요하지만 이 친구가 정말 오래걸리는거 같네요..

(심지어 그림도 그려야하는데 언제그리지..🤦🏻‍♂️)

다음엔 테스트용 페이지에 대한 글도 좀 작성해보고.. 백엔드 관련 지식도 좀 적어볼게요

(문제는 적는게 생각보다 힘들다는거.. 어헝헝)

그럼  20000.

 

 

오늘의 KPT 회고

 

Keep: 기획을 위해 여러가지 풀스택 플젝을 만들어서 시도해보는 림졍 칭차내!

Problem: 그래서 피그마는 언제 마무리할래? ^^

Try: 와이어프레임의 이미지는 깡통 애용해보기.

728x90
반응형

'우당탕탕 풀스택 도전기' 카테고리의 다른 글

[DB]SQL 기초 총정리  (1) 2025.05.20