RATSENO

[Docker]윈도우에서 postgresql 설치 후 접속 시 권한 문제 본문

DEV/DevOps

[Docker]윈도우에서 postgresql 설치 후 접속 시 권한 문제

RATSENO 2020. 1. 3. 00:05

윈도우10 환경에서 도커설치 후 

도커에 postgresql을 사용하기 위해 postgresql 컨테이너를 설치 후 실행 중 문제가 발생하였습니다.

 

먼저 docker에 postgresql 컨테이너를 설치해 보겠습니다.

 

 

설치하기에 앞서 먼저 docker ps -a 명령어를 이용하여 설치되어있는 컨테이너 목록들을 확인합니다.

postgres가 이미 설치되어 있기때문에 해당 컨테이너를 삭제하겠습니다.

 

해당 컨테이너가 이미 running 중이기 때문에 삭제할 수 없다는 에러가 출력됩니다.

컨테이너를 stop 시키겠습니다.

 

다시 삭제를 시도해보겠습니다.

docker ps -a 명령어로 삭제 되었는지 확인해봅시다.

정상적으로 삭제된것을 확인할 수 있습니다.

이어서 postgres를 설치해보겠습니다.

 

-p 5432:5432 

     로컬 호스트와 5432포트와 도커 컨테이너의 5432 포트를 맵핑

POSTGRES_DB=springdata 

   DB이름은 springdata

--name postgres_boot

   컨테이너의 이름

-d

    demon모드로 백그라운드로 띄우겠다

postgres

     설치할 image의 이름

 

exec

    -컨테이너 내부에서 커맨드라인을 수행하도록 외부에서 입력을 넣는 것입니다.

      docker exec (옵션) (컨테이너 이름 또는 아이디의 앞부분 일부) (커맨드)

-i

    컨테이너와의 입출력을 interactive하게 설정한다.

-t

     타겟이 되는 어느 컨테이너에 명령어를 실행할 것인지

postgres_boot

     타겟 컨테이너

bash

     실행할 명령어

 

위의 명령어를 실행하게 되면 postgres_boot 라는 컨테이너 안으로 들어오게 됩니다.

 

psql

    postgres DB에 postgres 롤로 접속

 

하게 되면

psql: FATAL:  role "postgres" does not exist

라는 오류가 출력되게 됩니다.

 

이것은 기본으로 명시한 디비에 접근할 때 postgres라는 유저로 접근을 시도하기 때문에 발생하는 오류라고 합니다.

(위에서 저희는 POSTGRES_USER=onestar 라고 셋팅하여 postgres를 설치하였습니다.)

 

그래서 직접 명시적으로 --username을 기입하여 접근하게 되면 문제를 해결할 수 있습니다.

 

psql --username (유저명) --dbname (DB명)
Comments