CS/Database

[PostgreSQL] Mac M1 homebrew로 PostgreSQL 설치 및 Datagrip 연동 (feat. postgresql 버전 별 차이 고민)

kth990303 2023. 1. 18. 16:07
반응형

postgreSQL을 로컬에 설치할 일이 생겼다. 

이왕 설치하는 거, 블로그에 기록해두면 이후에 두고두고 보기 좋을 것 같아서 포스팅해보려 한다.

 

설치환경은 Mac M1이며, 별도로 홈페이지 접속하여 설치하기 귀찮아서 homebrew로 설치하려 한다.

DB IDE는 Datagrip을 이용할 것이며, 여기에 연동할 예정이다.

 

DBeaver, PGAdmin 등 다양한 IDE가 있던데, PGAdmin은 비교적 느리고 일부 버그가 있다고 해서 DBeaver이랑 Datagrip 중에 고민했다. 그러던 중, https://medium.com/querypie/맘에-쏙-드는-database-ide를-찾아서-b38ee2d09103 글을 발견하여 최종적으론 Datagrip과 연동하기로 결정!

 

맘에 쏙 드는 Database IDE를 찾아서

QueryPie 개발기 #1: 난 왜 Database 도구를 만들게 되었나

medium.com


설치 방법

1. postgre 설치 가능 버전을 찾는다.

brew search postgresql

2023년 1월 18일 기준, postgresql@15 버전까지 나온 것을 확인할 수 있었다.


1-1. 설치할 버전 판단

결론부터 말하자면 나는 최신버전인 14버전을 설치하기로 했다.

그 이유는 아래와 같다.

 

우선 나는 postgresql 경험이 적어 postgresql 에 대한 이해도가 낮다.

postgresql 14 와 15 버전의 차이는 사실 MERGE 기능이 추가된 것 외에는 잘 모르긴 한다.

postgresql 15는 2022년 11월에 나와서 아직 너무 최신이라 불안정할 수 있겠다는 판단을 해서, 비교적 안정적인 14 버전을 설치하기로 결정했다.

 

그럼 왜 14보다 이전 버전은 설치하지 않았는가?

버전이 추가될 때마다 b-tree 커버링 인덱스 지원(postgresql@11 이후), b-tree index update 관련 성능 이슈 해결(postgresql@14 이후) 등과 같이 많은 성능개선이 있었기 때문에 최신 버전을 설치하는 것이 합리적이라 판단, 14 버전을 설치하기로 했다.

 

postgresql 14 버전의 b-tree index update 성능 이슈에 대한 자세한 내용은 아래 링크를 참고하자.

https://www.postgresql.org/docs/14/btree-implementation.html#BTREE-DELETION

 

64.4. Implementation

64.4. Implementation 64.4.1. B-Tree Structure 64.4.2. Bottom-up Index Deletion 64.4.3. Deduplication This section covers B-Tree index implementation details that may be …

www.postgresql.org

 

다만, 아직 나는 PostgreSQL 경험이 적어서 올바른 판단을 하지 못했을 가능성도 존재한다.

추가로 조언해줄 부분이 있다면 댓글을 남겨주세요!


2. 설치하기

brew install postgresql

설치하는데는 약 3~5분 정도 소요된다.

14.6 버전의 postgresql 설치 완료!

postgres --version

위 명령어로 postgres가 잘 설치됐는지, 어떤 버전이 설치됐는지 확인해보자.


3. PostgreSQL 실행하기

brew services start postgresql@14

참고로 `brew services start postgresql` 명령어도 되긴 한다.

하지만 아래처럼 곧 deprecated되니 @{version} 을 붙여서 사용하라는 안내문이 나온다.


4. psql (postgresql 쉘) 접속

psql postgres

postgres=# 화면이 나오면 성공적으로 접속 완료

이 상태에서 \du 를 입력해주면 사용자 및 권한에 대한 정보가 나온다.

\du 입력
kth990303, board 유저한테 위와 같은 권한이 부여된 것을 확인

board는 내가 추가로 넣어준 것이고, kth990303은 postgresql을 설치하면 자동으로 사용자가 권한을 부여받기 때문에 보이는 것이다.


5. 사용자 생성 및 권한 추가

CREATE ROLE {사용자명} WITH LOGIN PASSWORD '{비밀번호}';
ALTER ROLE {사용자명} CREATEDB;	// DB 생성 권한 부여

이 작업을 해주어야 해당 사용자명으로 Datagrip에서 DB를 생성할 수 있게 된다.

 

작업 후에 \du 명령어로 권한이 부여됐는지 확인해보자.


6. Datagrip 연동

좌측 상단의 빨간박스에 있는 +를 눌러 datasource를 새로 만들어주자.

DB는 PostgreSQL을 선택한다.

postgreSQL의 default 포트 번호는 5432이므로 위와 같이 세팅해준다.

우리는 로컬에서 postgresql을 사용할 것이므로 host는 localhost로, Authentication은 User & Password를 선택하고 아까 권한을 부여해준 사용자 정보를 입력해주면 된다.

 

커넥션이 연결되는지 하단에 Test Connection을 클릭하여 위와 같이 나오면 성공!

만약, 제대로 뜨지 않는다면 사용자 및 권한 정보를 확인해보자.

이제 위와 같이 DB를 만들어주고~

스크립트를 작성하여 실행해보면 localhost에 연결되고 결과가 잘 나오는 것을 확인할 수 있다~


참고자료

반응형