
내용 정리
- mongosh를 사용한 접속 방법
$ mongosh -u {username} -p {password}
- mongodb는 database > collection > document 순서로 데이터를 그룹화 한다.
- use {database_name} 명령을 사용하면 해당 데이터 베이스를 사용하도록 설정한다. 데이터베이스가 없는 경우 생성 후 이동한다.
- mongodb는 사용자 계정을 database 단위로 관리 한다. mydatabase1과 mydatabase2에 동일한 사용자가 있어도 서로 다른 사용자로 관리된다.
- 현재 사용 중인 database에 생성하는 사용자 계정이 종속된다.
- 사용자를 생성하려면 db.createUser() 명령을 사용한다.
$ use {database_name}
$ db.createUser(...)
$ use {database_name}
$ db.dropUser("{user_name}")
- mongodb는 미리 정의 된 사용자 역할(role)을 기반으로 database의 권한을 부여 한다. "{my_database}의 {role_name} 역할을 부여"하는 방식이다.
- mongodb 설치 후 admin 사용자 생성, 일반 사용자 생성 순서로 진행한다.
- admin 사용자는 아래 명령으로 생성한다.
# https://www.mongodb.com/docs/manual/tutorial/configure-scram-client-authentication/#create-the-user-administrator
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: passwordPrompt(), // or cleartext password
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
- mongodb 종료는 admin 명령으로 실행한다.
$ db.adminCommand( {shutdown: 1} )
- mongosh 접속 이후 인증을 진행하려면 db.auth() 명령을 사용한다.
$ use admin
$ db.auth("{user_name}", "{mypassword}")
- 특정 데이터베이스에 권한을 부여할 때는 database-specific role을 부여 한다.
| Role | 설명 |
| read | 데이터베이스의 데이터를 읽을 수 있음. |
| readWrite | 데이터베이스의 데이터를 읽고 쓸 수 있음. |
| dbAdmin | 데이터베이스의 스키마 관리 권한(인덱스 생성, 통계 확인 등). |
| userAdmin | 데이터베이스 사용자 관리 권한(사용자 생성, 수정, 삭제). |
| dbOwner | 데이터베이스 소유자 권한(모든 작업 수행 가능). |
- 클러스터 관련 작업이 필요할때는 cluster-wide role을 부여 한다.
| Role | 설명 |
| clusterAdmin | 클러스터 관리 권한(샤딩, 복제 설정, 클러스터 상태 점검 등). |
| clusterMonitor | 클러스터 상태를 모니터링할 수 있음(읽기 전용). |
| hostManager | 호스트 관리 권한(서버 상태 확인, 로그 접근). |
| backup | 백업 권한(데이터 덤프 및 스냅샷 생성). |
| restore | 데이터 복원 권한. |
| readWriteAnyDatabase | 모든 데이터베이스에 읽기/쓰기 작업 수행 가능. |
| userAdminAnyDatabase | 모든 데이터베이스에서 사용자 관리 가능. |
| dbAdminAnyDatabase | 모든 데이터베이스의 스키마 관리 가능. |
- root role을 부여하면 모든 작업을 수행할 수 있다.
- 참고 자료 https://www.mongodb.com/docs/manual/reference/built-in-roles/
Built-In Roles in Self-Managed Deployments - MongoDB Manual v8.0
MongoDB grants access to data and commands through role-based authorization and provides built-in roles that provide the different levels of access commonly needed in a database system. You can additionally create user-defined roles.A role grants privilege
www.mongodb.com
- 사용자 계정 현황을 보고 싶으면 db.getUsers() 명령을 사용한다.
$ db.getUsers()'Software Engineering > MongoDB' 카테고리의 다른 글
| [MongoDB] MongoDB 스터디 1 (0) | 2025.01.16 |
|---|---|
| [MongoDB] Replicat set 구성을 위한 사전 지식 정리 (0) | 2025.01.14 |