MongoDB – 계정 관리
- mongod.conf
- mongod.conf 파일은 mongodb 설정 파일입니다
- mongoDB는 기본적으로 authorization이 활성화되어 있지 않아서 누구나 쉽게 접속할 수 있습니다
- 접근 제어를 위해 별도의 authorization 활성화 설정을 해야합니다
- mongod.conf 환경설정 더 알아보기
# mongod.conf file
# version 3.*
auth=true
# version 4.*
security:
authorization: enabled
- Dockerize시 계정 설정
- Docker mongoDB 슈퍼 계정 관련 환경 변수
MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD
- Docker mongoDB 슈퍼 계정 관련 환경 변수
- Docker-Compose 작성 예시
- 예시로 mongo-express도 함께 추가하였으나 mongo-express는 사용 시에만 참고하세요
- mongo-express – Node.js, Express 및 Bootstrap3으로 작성된 웹 기반 MongoDB 관리 인터페이스
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/
- Docker Image 배포 예시
# 1. 이미지를 받아서 포트 지정 후 배포
docker run --name test-mongo -d --rm -p 27017:27017 mongo:4.2
# 2. 1번에서 DB 데이터를 볼륨 데이터로 마운트 추가
docker run --name test-mongo -d --rm -p 27017:27017 -v %cd%/db:/data/db/ mongo:4.2
# 3. 2번에서 로그 데이터 마운트, 환경설정 위치 지정 및 디렉터리 마운트
# 슈퍼계정 환경 변수를 적용하여 계정을 생성시킵니다.
docker run --name test-mongo -d --rm -p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=secret \
-v %cd%/db:/data/db/ -v %cd%/conf:/etc/mongo \
-v %cd%/log:/var/log/mongodb \
mongo:4.2 --config /etc/mongo/mongod.conf
1, 2번과 같이 Docker 배포 시 별도의 계정과 패스워드를 지정하지 않았으므로 authorization 비활성화를 위해 mongod.conf의 security.authorization 값이 disabled가 되도록 설정합니다
3번과 같이 Docker 배포 시 슈퍼 계정에 대한 환경 변수를 지정하였으므로 해당 계정으로 접속이 가능하도록 authorization 활성화를 위해 mongod.conf의 security.authorization 값이 enabled가 되도록 설정이 필요합니다
추가) 만약 슈퍼 계정을 생성 후 인증 과정를 활성화하지 않는다면 아래와 같은 에러와 함께 조회가 불가능합니다

- admin DB
- authorization Database
# admin DB 이동
use admin

- 계정 조회
// 시스템의 모든 계정 조회
db.system.users.find()
// 해당 데이터베이스의 특정 사용자 조회
use test
db.getUser("test01")
- 계정 생성 및 삭제
- 계정은 권한을 적용하려는 데이터베이스로 이동 후 생성 및 삭제하도록 합니다
# 계정 생성
use testDB
db.createUser({ user: "test01", pwd: "mypassword", roles: [ "readWrite" ]})
# 계정 삭제
use testDB
db.dropUser("testUser")
- role 생성 및 삭제
- role은 적용하려는 데이터베이스로 이동 후 생성 및 삭제하도록 합니다
# role 생성
use testDB
db.createRole(
{
role: "DevOps",
privileges: [],
roles: [
{ role: "readWrite", db: "test01"}
]
}
)
# role 삭제
use testDB
db.dropRole( "readPrices", { w: "majority" } )
- 계정 접속
$ mongo -u "DevOps" --authenticationDatabase "admin"
Enter password:
댓글 한 개
핑백 :