각 계정은 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: