MongoDB에서 사용자 비밀번호를 변경하는 방법
MongoDB에서 사용자의 비밀번호를 변경하려면 changeUserPassword() 메서드를 사용해야 합니다. 이 메서드는 사용자 이름과 새로운 비밀번호 두 개의 인자를 받아 해당 사용자의 비밀번호를 즉시 갱신합니다.
실제 동작 과정을 이해하기 위해, 먼저 특정 역할(role)을 가진 사용자를 하나 생성해 보겠습니다.
1단계: 테스트용 사용자 생성
다음은 admin 데이터베이스에서 'test' 데이터베이스에 대한 읽기/쓰기 권한을 가진 사용자를 생성하는 쿼리입니다.
> use admin
switched to db admin
> db.createUser(
... {
... user: "Chris",
... pwd: "chris",
... roles: [ { role: "readWrite", db: "test" } ]
... }
... );
Successfully added user: {
"user" : "Chris",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}사용자가 성공적으로 생성되었습니다. 생성된 사용자 정보에는 사용자 이름과 부여된 역할이 함께 표시됩니다.
2단계: 생성된 사용자 확인
이제 test 데이터베이스에서 해당 사용자 정보를 조회해 보겠습니다.
> db.getUser("Chris");위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : "admin.Chris",
"user" : "Chris",
"db" : "admin",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}출력 결과를 통해 사용자 'Chris'가 admin 데이터베이스에 등록되어 있으며, test 데이터베이스에 대한 readWrite(읽기/쓰기) 권한을 가지고 있음을 확인할 수 있습니다. 또한 SCRAM-SHA-1과 SCRAM-SHA-256 인증 메커니즘이 적용되어 있는 것도 볼 수 있습니다.
3단계: 비밀번호 변경
이제 changeUserPassword() 메서드를 사용하여 MongoDB 사용자의 비밀번호를 변경하는 쿼리를 실행합니다. 첫 번째 인자로 대상 사용자 이름을, 두 번째 인자로 새로운 비밀번호를 전달합니다.
> db.changeUserPassword("Chris", "123456");쿼리 실행 후 별도의 오류 메시지가 출력되지 않으면 비밀번호가 성공적으로 변경된 것입니다. 이후 사용자 'Chris'는 기존 비밀번호인 'chris' 대신 새로 설정한 '123456'으로 로그인해야 합니다.
참고 사항
- 권한 요구: changeUserPassword()를 실행하려면 해당 데이터베이스에서 userAdmin 또는 userAdminAnyDatabase 역할이 필요합니다.
- 적용 범위: 이 명령은 명령어를 실행 중인 데이터베이스에 등록된 사용자에게만 적용됩니다. 다른 데이터베이스의 사용자를 변경하려면 먼저 해당 데이터베이스로 전환(use)해야 합니다.
- 보안 팁: 실제 운영 환경에서는 추측하기 쉬운 단순한 비밀번호보다 충분히 길고 복잡한 비밀번호를 사용하는 것이 좋습니다.