본문 바로가기

Backend/PostgreSQL and TypeORM

role does not exist

Docker + postgreSQL을 함께 사용중이었는데, 계속 제공된 local DB 정보를 연결하면 IntelliJ에서 postgreSQL 연결시 'role does not exist'라는 에러가 발생하였다. 

 

뭔가 현재 접속 계정이, 접근 권한이 없는건가?라는 생각이 들었다. 

해결 방법은 다음과 같다. 

 

0) package.json에서 start:db running(이 이름은 각 프로젝트마다 다를 수 있다) 

1) local.env 파일에 접속 (관련해서 비슷한 이름이 있는 local db 환경변수 파일에 접속) 

2) DB_USER 부분을, 나의 super 권한을 가진 계정 이름으로 입력하기

DB_HOST=localhost 
DB_PORT=5432 
DB_NAME=postgres 
DB_USER=해당 db의 user 이름 
DB_PASS=해당 db의 패스워드

3) IntelliJ에 Database에 postgreSQL DB 연결하면서 local.env 파일에 작성해뒀던 정보로 DB 연결 
4) migration:local:run으로 실행 

 

그러나, 왜 이렇게 연결했는가? 

내가 clone 받은 프로젝트의 경우 Docker로 생성된 postgres DB였다. 그러나 곰곰히 생각해보니, 나는 docker로 postgres를 설치했던것이 아닌 + Mac Terminal에서 postgres를 설치했었기 때문에 docker에서 postgres 설정과 관련해서 계속 'role does not exist'라는 에러가 뜨며 postgres DB가 연결이 되지 않았던 것이다. 

-> 그래서, 위의 과정을 실행하기 전에 Mac Terminal에서 다음과 같이 입력해보자. 

psql postgres
\du

\du를 통해 권한 있는 user의 정보를 본다.