개요
적절한 권한이 있는 사용자는 자신의 비밀번호와 사용자 지정 데이터를 변경할 수 있습니다. 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" } } )
메시지가 표시되면 비밀번호를 입력합니다.