자체 관리형 배포에서 비밀번호 및 사용자 지정 데이터 변경
개요
적절한 권한이 있는 사용자는 자신의 비밀번호와 사용자 지정 데이터를 변경할 수 있습니다. Custom data
는 선택적으로 사용자 정보를 저장합니다.
고려 사항
이 절차에서 사용할 강력한 비밀번호를 생성하려면 openssl
유틸리티의 rand
명령을 사용할 수 있습니다. 예를 들어, 48개의 유사 임의 바이트로 구성된 base64로 인코딩된 문자열을 생성하려면 다음 옵션이 포함된 openssl
rand
를 실행합니다.
openssl rand -base64 48
전제 조건
자신의 비밀번호와 사용자 지정 데이터를 수정하려면 사용자 데이터베이스에서 각각 changeOwnPassword
및 changeOwnCustomData
조치를 부여할 수 있는 권한이 있어야 합니다.
사용자 및 역할 관리 권한이 있는 사용자로 연결
역할 이 있는 사용자와 같이 사용자 및 역할을 mongod
mongos
userAdminAnyDatabase
관리 수 있는 권한이 있는 또는 에 연결합니다. 다음 절차에서는 자체 관리형 배포서버에서 액세스 제어 활성화에 생성된 myUserAdmin
를 사용합니다.
mongosh --port 27017 -u myUserAdmin -p --authenticationDatabase 'admin'
적절한 권한이 있는 역할을 생성합니다.
admin
데이터베이스에서 changeOwnPassword
및 changeOwnCustomData
을 가진 새 역할을 create
합니다.
use admin db.createRole( { role: "changeOwnPasswordCustomDataRole", privileges: [ { resource: { db: "", collection: ""}, actions: [ "changeOwnPassword", "changeOwnCustomData" ] } ], roles: [] } )
이 역할을 가진 사용자를 추가합니다.
test
데이터베이스에서 "changeOwnPasswordCustomDataRole"
역할이 생성된 신규 사용자를 create
합니다. 예를 들어, 다음 작업은 기본 제공 역할 readWrite
과 사용자가 생성한 "changeOwnPasswordCustomDataRole"
을 모두 가진 사용자를 생성합니다.
팁
메서드/명령 호출에 비밀번호를 직접 지정하는 대신 passwordPrompt()
메서드를 다양한 사용자 인증/관리 메서드/명령과 함께 사용하여 비밀번호를 입력하라는 메시지를 표시할 수 있습니다. 그러나 이전 버전의 mongo
shell 에서와 마찬가지로 비밀번호를 직접 지정할 수 있습니다.
use test db.createUser( { user:"user123", pwd: passwordPrompt(), // or cleartext password roles:[ "readWrite", { role:"changeOwnPasswordCustomDataRole", db:"admin" } ] } )
기존 사용자에게 새 역할을 부여하려면 db.grantRolesToUser()
를 사용하세요.
절차
적절한 권한을 통해 연결합니다.
적절한 권한이 있는 사용자로 mongod
또는 mongos
에 연결합니다.
예를 들어, 다음 작업은 전제 조건 섹션에서 생성된 user123
으로 MongoDB에 연결합니다.
mongosh --port 27017 -u user123 --authenticationDatabase 'test' -p
-p
명령줄 옵션에 비밀번호를 지정하지 않으면 mongosh
(이)가 비밀번호를 묻는 메시지를 표시합니다.
전제 조건 섹션에 지정된 권한이 있는지 확인하고 사용자 정보를 보려면 usersInfo
명령을 showPrivileges
옵션과 함께 사용합니다.
비밀번호와 사용자 지정 데이터를 변경합니다.
db.updateUser()
메서드를 사용하여 비밀번호 및 사용자 지정 데이터를 업데이트합니다.
예를 들어, 다음 작업은 사용자의 비밀번호를 KNlZmiaNUp0B
로 변경하고 사용자 지정 데이터를 { title: "Senior Manager" }
로 변경합니다.
팁
메서드/명령 호출에 비밀번호를 직접 지정하는 대신 passwordPrompt()
메서드를 다양한 사용자 인증/관리 메서드/명령과 함께 사용하여 비밀번호를 입력하라는 메시지를 표시할 수 있습니다. 그러나 이전 버전의 mongo
shell 에서와 마찬가지로 비밀번호를 직접 지정할 수 있습니다.
use test db.updateUser( "user123", { pwd: passwordPrompt(), // or cleartext password customData: { title: "Senior Manager" } } )
메시지가 표시되면 비밀번호를 입력합니다.