MongoDB에서 사용자 목록을 확인하는 두 가지 방법
MongoDB 셸(Mongo Shell)에서 현재 데이터베이스에 등록된 모든 사용자를 조회하려면 getUsers() 메서드와 show users 명령 두 가지 방식을 사용할 수 있습니다. 두 방법은 본질적으로 동일한 목적, 즉 사용자 목록 조회를 수행하지만, 출력 형태와 활용 방식에서 약간의 차이가 있습니다.
이 글에서는 두 방법의 문법과 실제 실행 결과를 예제와 함께 자세히 살펴보겠습니다.
방법 1: getUsers() 메서드 사용
getUsers()는 데이터베이스 객체에 직접 호출하는 JavaScript 메서드입니다. 문법은 다음과 같습니다.
db.getUsers();
이 메서드를 실행하면 현재 데이터베이스의 모든 사용자 정보를 배열(Array) 형태로 반환합니다. 각 사용자 항목에는 고유 ID(_id), 사용자 이름(user), 소속 데이터베이스(db), 부여된 역할(roles), 인증 메커니즘(mechanisms) 등이 포함됩니다.
실제로 Mongo 셸에서 다음과 같이 입력해 보겠습니다.
> db.getUsers();
실행 결과는 아래와 같습니다.
[
{
"_id" : "test.John",
"user" : "John",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
},
{
"role" : "dbAdmin",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
},
{
"_id" : "test.admin",
"user" : "admin",
"db" : "test",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]위 결과에서 확인할 수 있듯이, 'John' 사용자에게는 test 데이터베이스에 대한 readWrite와 dbAdmin 역할이 부여되어 있고, 'admin' 사용자에게는 root 역할이 설정되어 있습니다. 또한 두 사용자 모두 SCRAM-SHA-1과 SCRAM-SHA-256 인증 메커니즘을 지원합니다.
방법 2: show users 명령 사용
show users는 Mongo 셸에서 제공하는 헬퍼(helper) 명령으로, 더 짧고 간편하게 사용자 목록을 확인할 수 있습니다. 문법은 다음과 같습니다.
show users;
실제 실행 예시는 다음과 같습니다.
> show users;
실행 결과는 아래와 같습니다.
{
"_id" : "test.John",
"user" : "John",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
},
{
"role" : "dbAdmin",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
{
"_id" : "test.admin",
"user" : "admin",
"db" : "test",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}두 방법의 차이점 정리
두 방법 모두 동일한 사용자 정보를 반환하며, 그 목적은 사실상 같습니다. 다만 몇 가지 실무적인 차이가 있습니다.
- 출력 형식: getUsers()는 사용자 정보를 하나의 배열로 감싸서 반환하는 반면, show users는 각 사용자 객체를 개별적으로 나열합니다.
- 활용성: getUsers()는 JavaScript 메서드이므로 스크립트나 프로그램 내에서 결과를 변수에 담아 후속 처리하기에 적합합니다.
- 편의성: show users는 대화형 셸에서 빠르게 확인할 때 유용한 단축 명령입니다.
결론적으로, 일상적인 확인 작업에는 show users, 스크립트 자동화나 상세 조회에는 getUsers()를 사용하는 것이 효율적입니다. 참고로 이 명령들을 실행하려면 해당 데이터베이스에 대한 viewUser 권한이 필요하다는 점도 기억해 두세요.