mongodb 3.4.x에서 인증을 다루는 방법을 소개한다.
난 주로 서버 컴포넌트를 docker를 이용해서 사용한다.
mongodb image는 공식 제공되는 걸 이용한다.
create admin
docker run --name some-mongo -d mongo --auth
docker exec -it some-mongo mongo admin
connecting to: admin
> db.createUser({ user: 'admin', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" },
{ role: 'dbAdminAnyDatabase', db: 'admin' },
{ role: 'clusterMonitor', db: 'admin' }] });
- userAdminAnyDatabase 이 Role은 MongoDB에 미리 정의된 롤이다. 주로 사용자 추가나 권한관리에 사용된다.
- clusterMonitor 모니터링이 필요할때 필요한 권한이다.
- dbAdminAnyDatabase는 dbAdmin과 동일하고 대신 모든 DB에 적용된다.
create user
docker exec -it some-mongo mongo admin
connecting to: admin
> db.auth('admin', 'some-initial-password');
> db = db.getSiblingDB('test_db')
> db.dropUser('test_user');
> db.createUser({ user: 'test_user', pwd: 'test_user_pw', roles: [
{ role: 'readWrite', db: 'test_db' },
{ role: 'dbAdmin', db: 'test_db' },
] });