MongoDB에서 사용자 이름을 변경하는 방법
MongoDB에서 기존 사용자의 이름을 변경하려면 update() 메서드와 $set 연산자를 조합하여 새로운 사용자 이름을 지정하면 됩니다. 기본 문법은 다음과 같습니다.
db.system.users.update({"user":"yourOldUserName"}, {$set:{"user":"yourNewUserName"}});
아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 현재 등록된 모든 사용자 확인하기
먼저 admin 데이터베이스로 이동한 뒤, MongoDB에 등록된 모든 사용자 목록을 조회합니다.
> use admin; switched to db admin > db.getUsers();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
[
{
"_id" : "admin.Chris",
"user" : "Chris",
"db" : "admin",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
},
{
"_id" : "admin.John",
"user" : "John",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
},
{
"_id" : "admin.Robert",
"user" : "Robert",
"db" : "admin",
"roles" : [
{
"role" : "readWrite",
"db" : "sample"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
현재 Chris, John, Robert 세 명의 사용자가 등록되어 있는 것을 확인할 수 있습니다.
2단계: 사용자 이름 변경하기
이제 'John'이라는 사용자의 이름을 'Larry'로 변경해 보겠습니다.
> db.system.users.update({"user":"John"}, {$set:{"user":"Larry"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
결과에서 nModified : 1이 표시되면 한 개의 사용자 문서가 성공적으로 수정된 것입니다.
3단계: 변경 결과 확인하기
getUser() 메서드를 사용하여 'Larry'라는 이름의 사용자가 정상적으로 등록되었는지 확인합니다.
> db.getUser('Larry');
실행 결과는 다음과 같습니다.
{
"_id" : "admin.John",
"user" : "Larry",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
출력 결과를 보면 사용자 이름은 'Larry'로 변경되었지만, _id 필드에는 여전히 기존 값인 "admin.John"이 유지되는 점에 유의하세요.
4단계: 기존 사용자 이름 조회 시 null 반환 확인
변경 전의 사용자 이름인 'John'으로 조회하면 해당 사용자가 더 이상 존재하지 않으므로 null 값이 반환됩니다.
> db.getUser('John');
실행 결과는 다음과 같습니다.
Null
참고 사항
위 방식은 system.users 컬렉션을 직접 수정하는 방법입니다. MongoDB 2.6 이상 버전에서는 내장 메서드인 db.updateUser()를 사용하는 것이 권장되며, 운영 환경에서는 시스템 컬렉션 직접 수정보다 공식 메서드를 활용하는 것이 안전합니다.