Software Workshop

MongoDB는 기본적으로 무인증 모드로 서비스를 실행하기 때문에 어드민 계정을 생성한 이후에 인증 모드로 설정을 변경하고 재시작해야 함

어드민 계정 생성

admin DB에서 계정 생성

use admin
db.createUser({user:"어드민계정", pwd:"어드민패스워드", roles:[{"role" : "userAdminAnyDatabase", "db" : "admin"}]})

서비스 중지 및 설정 파일 변경

sudo service mongodb stop
vi /etc/mongodb.conf

auth = true 항목의 주석 제거

/etc/mongodb.conf

# Turn on/off security. Off is currently the default
#noauth = true
auth = true

서비스 재시작

sudo service mongodb start

확인 방법 1

ID/패스워드없이 mongo 클라이언트를 실행한 다음에, db.auth() 함수를 호출하여 인증을 거치는 방법

use admin
db.auth("어드민계정", "어드민패스워드")

확인 방법 2

mongo 클라이언트의 command-line argument로 지정하여 인증을 거치는 방법

mongo -u 어드민계정 -p 어드민패스워드 admin
db.getUsers()

인증에 실패하면 다음과 같은 에러메시지가 발생함

2020-04-20T12:59:13.872+0900 Error: not authorized on admin to execute command { usersInfo: 1.0 } at src/mongo/shell/db.js:1358

일반 사용자 계정 생성

use admin
db.createUser({user:"사용자계정", pwd:"사용자패스워드", roles:[{"role" : "readWrite", "db" : "사용자데이터베이스"}]})

readWrite 역할 대신에 dbOwner 역할을 부여하기도 함

Reference

https://docs.mongodb.com/manual/tutorial/enable-authentication/