Dev Log
MongoDB 사용시, 인증 기능 설정하기
DevHyo
2021. 8. 3. 20:56
MongoDB를 사용하여 간단한 프로젝트를 진행하는 도중, MongoDB 인증을 설정하는 방법에 대해서 정리해봤습니다. (Docker 기반의 내용을 다루고 있습니다.)
docker-compose를 통한 Mongo 컨테이너 실행
docker-compose.yml는 아래와 같은 내용들로 정의되어 있습니다.
version: '3.3'
services:
my-mongo:
image: mongo
container_name: my-mongo
ports:
- "27017:27017"
# Authentication를 설정하기 위해서, command: [--auth]를 주석 처리해야한다. 나머지 내용은 따로 정리하고 링크를 달 것!
# command: [--auth]
restart: always
networks:
- my-mongo_net
networks:
my-mongo_net:
driver: bridge
docker-compose.yml 정의된 내용을 기반으로 컨테이너를 실행합니다.
$ docker-compose up -d
Docker 기반의 Mongo 컨테이너가 실행되면, 인증을 위한 사용자들 등록
저는 DataGrip을 사용해서 접속했습니다.
console 창을 열어서 아래와 같은 명령어를 수행합니다.
use admin; # admin DB 선택
// Root 계정 등록
db.createUser({
user: "root",
pwd: "1234",
roles: ["root"]
});
use test_db; # 사용자를 등록할 DB를 선택한다.
// test_db의 readWrite만 수행할 수 있는 사용자 등록
db.createUser({
user: "test",
pwd: "1234",
roles: ["readWrite"]
});
현재 사용중인 모든 Connection을 반드시 닫아야 합니다.
docker-compose.yml를 다시 수정
command 에 --auth로 되어 있는 부분을 주석 해제합니다.
version: '3.3'
services:
my-mongo:
image: mongo
container_name: my-mongo
ports:
- "27017:27017"
# Authentication를 설정하기 위해서, command: [--auth]을 주석 해제!
command: [--auth]
restart: always
networks:
- my-mongo_net
networks:
my-mongo_net:
driver: bridge
그리고 나서, Mongo 컨테이너를 다시 실행합니다.
$ docker-compose up -d
MongoDB에 인증이 설정이 잘 되었는지 확인
docker 컨테이너 안으로 접속합니다.
$ docker exec -it my-mongo bash
아래의 명령어를 입력하여, MongoDB 접속합니다.
# admin DB 접속
root@a7c0a5eafcfc:/# mongo -u root -p 1234 --authenticationDatabase admin
# test DB 접속
root@a7c0a5eafcfc:/# mongo -u test -p 1234 --authenticationDatabase test_db
접속이 잘 되었다면, 아래의 명령어를 통해 db 목록들을 확인할 수 있습니다.
----- MongoDB 접속 -----
> show dbs;
마지막으로 인증 과정 없이 접속하게 되면, DB 목록들을 볼 수 없습니다.
root@a7c0a5eafcfc:/# mongo
----- MongoDB 접속 -----
> show dbs;