- Query/Mutation 등을 작성할 때, 이를 테스트 하는 과정에서 DB 내에 잘못된 데이터(Bad data)가 들어갈 수 있다는 애로사항이 있었다.
- 이를 방지하고 싶어서 생각해보던 중, 로컬 DB를 세팅하고 백엔드 프로젝트에 연결하여 사용하는 것으로 해결할 수 있겠다는 생각이 들어 PostgreSQL로 로컬 DB를 세팅해보기로 하였다.
- 아래는 이를 세팅하면서 겪은 이런저런 오류들과 GPT와의 논의 과정(?)을 개인적으로 기록했다. 과정을 꼼꼼하게 기록하질 않았어서... 중간중간 애매모호한 부분이나 의문점이 있는데, 이 부분들은 나중에 한 번 더 확인해봐야 할 것 같다.
과정
1. PostgreSQL 설치
PostgreSQL 공식 홈페이지에서 운영체제에 맞는 버전을 받아 설치한다. Mac 기준 Homebrew를 사용 중이라면 이걸로 설치할 수 있다.
brew install postgresql
2. PostgreSQL 실행
설치한 PostgreSQL을 실행하는 방식에는 2가지가 있다는 듯 하다.
- 컴퓨터를 부팅할 때마다 자동으로 PostgreSQL을 실행하기
- PostgreSQL을 백그라운드 서비스에 등록함으로써 컴퓨터가 부팅될 때마다 자동으로 실행되게끔 만든다.
- 아래의 명령어를 터미널에서 실행함으로써 등록이 가능하다(homebrew로 설치한 경우에만 가능).
brew services start postgresql
brew services stop postgresql // 현재 실행된 PostgreSQL을 중지, 자동실행도 해제한다
- 명령어를 사용해 필요할 때마다 실행하기
- 위와는 달리 PostgreSQL이 필요할 때만 구동하고 끄는 방법이다.
나는 매번 DB가 필요한 건 아니라서, 필요할 때 적절히 켜고 끄는 방법으로 정했다. 이에 GPT가 제시했던 명령어를 실행했는데 경로 에러가 뜨며 실행이 되지 않았다. 설치에 문제가 있었나 싶어 Homebrew로 PostgreSQL이 제대로 설치되었는지 정보를 확인하는데, 터미널에 DB 실행 명령어를 출력해주어서 그걸로 구동하는데 성공했다.
// 처음 시도한 명령어. 구동 실패
pg_ctl -D /usr/local/var/postgres start
// Homebrew로 PostgreSQL 정보를 조회했을 때 PostgreSQL에서 제시한 명령어. 구동 성공
/opt/homebrew/opt/postgresql@14/bin/postgres -D /opt/homebrew/var/postgresql@14
이렇게 실행한 DB의 구동을 중지하려면 터미널에서 Ctrl + C 눌러 취소하면 된다.
3. 실행한 로컬 DB에 접속하기
기본적으로 PostgreSQL을 설치하면 postgre 라는 이름의 DB가 존재한다. 구동한 로컬 DB에 연결하기 위해 localhost / 포트 번호 5432로 접속을 시도했다.
PostgreSQL의 디폴트 포트 번호가 5432이다.
다만 내 경우 DB를 구동하고 DBeaver를 통해 연결을 시도한 시점에서 에러가 나며 연결이 실패했는데, 이를 고치기 위해 몇 가지 방법을 시도 했고 크게 두 가지의 에러가 발생하는 것을 확인할 수 있었다.
- Role 이 존재하지 않는다.
- postgres Database가 존재하지 않는다(?).
DB는 기본적으로 존재하지 않나? 싶었는데 정확하게 원인 파악은 잘 안되어서... 일단 role을 만들기로 하였다. 시도한 것은 아래와 같다.
template1이란 PostgreSQL이 갖는 기본적인 DB이다. PostgreSQL에서 새로운 DB를 생성하면, 이 template1을 복사하여 생성하는게 기본이라고(이름 그대로 템플릿의 역할을 수행한다). 변경이 가능한 DB이기 때문에, 모든 데이터베이스에 공통적으로 적용할 사항을 template1에 적용하는 것 등이 가능하다.
이와 비슷하게 존재하는 다른 기본 DB로 template0이 존재하는데, 이것은 template1과 반대로 변경이 불가능한 데이터베이스이다. 초기 설정값을 갖는 데이터베이스 이기 때문에, template1과 달리 초기 상태의 데이터베이스를 만들고 싶을 때 사용한다고.
- template1에 연결한 후 role을 설정한다.
- 기본적으로 PostgreSQL에는 postgres라는 유저가 존재하는데, 이 유저에 권한을 부여하고 추가적으로 password를 설정해주었다.
postgres 데이터베이스를 생성한다.- 이는 본래 위의 두 에러에 대하여 GPT가 제시한 해결책인데, role를 설정한 후 DB에도 연결이 잘 되었다(?).
4. DBeaver를 통해 로컬 DB에 연결한다.
DBeaver는 SQL 클라이언트이자 데이터베이스 관리 도구이다. 여기에 설치한 PostgreSQL 로컬 데이터베이스를 연결한다. DBeaver 좌측 상단에 위치한 [새 데이터베이스 연결] 을 누르고, PostgreSQL를 선택하면 아래와 같은 화면이 뜬다.

- 로컬 DB에 연결하는 것이므로, Host에 localhost, Port에 PostgreSQL 기본 포트 번호인 5432를 설정한다.
- 기본 DB에 기본 유저를 사용하기 때문에 Database 및 Username에 postgres를 설정한다.
- 비밀번호를 설정했다면 role를 설정하며 추가한 비밀번호를 기입한다.
(사실 비밀번호 이외엔 만져줄 설정이 없다)
여기까지 완료했다면 로컬 DB에 성공적으로 연결된다. 실 서버에 영향을 주지 않고 원하는 작업을 할 수 있는 환경이 만들어졌다.
- 요즘 GPT와 같은 AI 툴을 이용하여 이런 저런 개발에 사용하고 있다. 이번 DB 세팅도, 잘 모르는 분야였기 때문에 AI에게 이것저것 질문하며 작업했는데, 편리하면서도 아직은 감이 잘 안 오는 듯한..? 능숙해지려면 이런 저런 것들을 시도해봐야 할 것 같은.
- 근래에 다시 백엔드 관련해서 간단한 작업을 하기 시작했는데... 아는게 적어 노심초사 하며 작업하고 있다... 공부를 열심히 해봐야 겠다.
'공부 > etc' 카테고리의 다른 글
Three.js and TypeScript (11) (2) | 2024.12.03 |
---|---|
Three.js and TypeScript (10) (0) | 2024.11.25 |
Three.js and TypeScript (9) (0) | 2024.11.22 |
Three.js and TypeScript (8) (1) | 2024.11.21 |
Three.js and TypeScript (7) (2) | 2024.11.20 |