인프런 커뮤니티 질문&답변

rebwon님의 프로필 이미지
rebwon

작성한 질문수

스프링 부트 개념과 활용

스프링 데이터 4부: PostgreSQL

docker에서 postgres를 사용할 때, role 에러.

작성

·

6.9K

13

기선님께서 올려주신 docker로 postgres사용하는 부분 중에서, su - postgres 명령어를 입력하고 psql spring boot를 하게되면, FATAL: role "postgres" does not exist라는 응답이 나오던데, 기선님도 이런 오류가 있으셨나요?

이 오류가 발생해서 여러가지 찾아본 결과 해결방법으로는 root에서 psql -U keesun springboot를 하게되면, DB에 연결이 되는걸 확인할 수 있었습니다.
추가로, Windows유저는 l을 해서 DB를 확인하면, OWNER가 docker run에서 POSTGRES_USER에서 설정한 유저로 바뀌어 있는 걸 확인했습니다.

혹시, Windows 10으로 이 강의를 보시면서, docker for windows를 통해 docker를 실습하시려는 분들은 이 오류가 발생하면 위에 해결방법을 활용해주세요.

답변 6

6

https://yeojin-dev.github.io/blog/postgresql-ubuntu/

이 블로그에 나와있는 하단의 명령어를 통해서 해결 가능합니다. 

psql --username=postgres --dbname=postgres

5

사용자명은 PostgreSQL을 설치 한 직후에는 수퍼 유저로 postgres 역할 밖에 생성되지 않으므로 -U postgres로 지정한다. 사용자명을 생략하게 되면 OS의 사용자명이 사용된다.

라고 문서에 쓰여있네요

default 가 os 사용자명으로 잡히기 때문인 것 같습니다. 따라서 os 사용자명과 POSTGRES_USER 에 입력한 값이 일치하지 않다면 psql -U (POSTGRES_USER 에 입력한 값) (DBname)을 입력해주어야하는 것 같습니다 

2

맥북 사용자인데 docker 실행 후 

error: could not connect to server: FATAL:  role "postgres" does not exist

에러가 계속 발생하더라구요. PostgreSQL 버전은 12.0 이었구요.

저같은 경우 기선님하고 같은 버전으로 사용하니 해결되었습니다. 

docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=keesun -e POSTGRES_DB=springboot --name postgres_boot -d postgres:9.6.2

2

백기선님의 프로필 이미지
백기선
지식공유자

오늘 오전에 비슷한 질문을 받아서 답변을 남겨드렸는데 그 질문이 없어졌네요.

저는 맥에서 촬영을 헀을 때 해당 문제를 보진 못헀지만 오늘 오전에 윈도에서 실험해보고 psql --username으로 POSTGRES_USERNAME에 입력한 값을 줘야 연결 되는것을 보고 답변 남겼었습니다.

아무쪼록 좋은 질문과 해결 방법 공유해 주셔서 정말 감사합니다.

0

저 같은 경우는, 기존에 localhost에 올라가 있는 postgre와 겹쳐서 같은 에러가 났는데, docker에서의 포트를 다르게 지정하였습니다. 5431 에서 5432로 연결되도록 하였네요. 

spring.datasource.url=jdbc:postgresql://localhost:5431/springboot

0

저도 같은 문제가 발생해 해결방법을 찾고 있었는데 바로 여기에 해결법이 있었네요 ㅎㅎ 감사합니다.

rebwon님의 프로필 이미지
rebwon

작성한 질문수

질문하기