각 계정은 db.system.users 컬렉션에 저장된다.

계정 조회


> use admin

## 방법1
> show users

## 방법2
> db.getUsers();


계정 생성

  • 모든 디비 접속계정을 설정할 수 있지만 일부 클라이언트에서 db접근권한이 없다고 나오므로 각 데이터베이스별로 계정을 설정하는것을 추천한다.
  • MongoDB Compass툴로 접속시 아래와같은 설정으로 모든접속계정설정으로 접속 가능하다.
    'mongodb://myurl.com:27017/admin?authSource=admin'

## 루트계정 생성
db.createUser({ 
    user: "유저". 
    pwd: "비밀번호", 
    roles: ["root"] // 계정이 가질 권한
});


## 모든 디비의 읽기 전용 계정
db.createUser( { 
    user: "user" ,
    pwd: "pass",
    roles: [
        {role:"readAnyDatabase", db: "admin"}
    ]
} )


## 모든 디비의 읽기쓰기 전용 계정
db.createUser( { 
    user: "user" ,
    pwd: "pass",
    roles: [
        {role:"readWriteAnyDatabase", db: "admin"}
    ]
} )

## 개별 디비의 읽기 전용 계정
db.createUser( { 
    user: "user" ,
    pwd: "pass",
    roles: [
        {role:"read", db: "my_db"},
        {role:"clusterAdmin",db:"admin"}
    ]
} )


## 개별 디비의 읽기쓰기 전용 계정
db.createUser( { 
    user: "user" ,
    pwd: "pass",
    roles: [
        {role:"readWrite", db: "my_db"},
        {role:"clusterAdmin",db:"admin"}
    ]
} )




계정 확인

리턴 값이 1이면 로그인 성공


db.auth("유저", "비밀번호")



계정 삭제


db.dropUser("유저")



사용자 정의(User Role)

MongoDB의 역할 관리는 다음 명령어로 관리할 수 있다.

방법 설명
db.createRole() 역할 및 권한 생성
db.updateRole() 사용자 정의 역할 업데이트
db.dropRole() 역할 삭제
db.grantPrivilegesToRole() 롤에 새 권한 할당
db.revokePrivilegesFromRole() 롤에 새 권한 제거

Ref: