MongoDB에서 새 사용자 생성 및 역할(Role) 설정하는 방법
MongoDB에서 관리자(admin)처럼 강력한 권한을 가진 새로운 사용자를 만들려면 userAdminAnyDatabase 역할을 사용하는 것이 효과적입니다. 이 역할은 모든 데이터베이스에서 사용자를 생성하고 관리할 수 있는 권한을 부여하므로, 사실상 관리자 수준의 권한으로 볼 수 있습니다.
1. 사용자 생성 기본 문법
새로운 사용자를 추가할 때는 먼저 admin 데이터베이스로 전환한 뒤 db.createUser() 메서드를 사용합니다. 기본 문법은 다음과 같습니다.
use admin
db.createUser(
{
user: "yourUserName",
pwd: "yourPassword",
roles: [ { role: "yourRoleName", db: "yourDatabaseName" } ]
}
)
- user: 생성할 사용자의 이름
- pwd: 사용자의 비밀번호
- roles: 부여할 역할(role)과 해당 역할이 적용될 데이터베이스
2. 실제 적용 예시
이제 위 문법을 실제로 적용해 보겠습니다. 다음은 "userAdminAnyDatabase" 역할을 가진 사용자를 생성하는 쿼리입니다.
> use admin
switched to db admin
> db.createUser(
... {
... user: "David Miller",
... pwd: "123456",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
3. 실행 결과
위 쿼리를 실행하면 사용자가 성공적으로 생성되었다는 아래와 같은 결과가 출력됩니다.
Successfully added user: {
"user" : "David Miller",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}참고 사항
실제 운영 환경에서는 위 예시처럼 단순한 비밀번호 대신 충분히 복잡하고 안전한 비밀번호를 사용하는 것이 좋습니다. 또한 상황에 따라 readWrite, dbAdmin 등 MongoDB에서 제공하는 다양한 내장 역할(built-in roles)을 조합하여 사용자 권한을 더욱 세분화해 관리할 수 있습니다.