具有適當許可權的用戶可以更改自己的密碼和自定義數據。 自定義數據存儲可選的用戶資訊。
注意事項
在此過程要生成一個強大的密碼,您可以使用openssl
實用程式的rand
命令。 例如,使用以下選項發出openssl rand
,以創建48
個偽隨機位元組的base64
編碼字串:
openssl rand -base64 48
先決條件
要修改自己的密碼和自定義數據,您必須具有在用戶數據庫上分別授予changeOwnPassword
和changeOwnCustomData
操作的許可權。
第一步:使用相應的許可權連接到MongoDB
使用“先決條件”部分指定的許可權連接到 mongod
或 mongos
。
以下過程使用在“啟用認證”中創建的用戶:myUserAdmin
。
$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
第二步:使用適當的許可權創建角色
在管理資料庫中,使用changeOwnPassword
和changeOwnCustomData
創建一個新角色。
use admin
db.createRole(
{ role: "changeOwnPasswordCustomDataRole",
privileges: [
{
resource: { db: "", collection: ""},
actions: [ "changeOwnPassword", "changeOwnCustomData" ]
}
],
roles: []
}
)
第三步:添加具有此角色的用戶
在test
資料庫中,使用創建的“changeOwnPasswordCustomDataRole
”角色創建一個新用戶。 例如,以下操作將創建具有內置角色readWrite
和用戶創建的“changeOwnPasswordCustomDataRole
”的用戶。
use test
db.createUser(
{
user:"user123",
pwd:"12345678",
roles:[ "readWrite", { role:"changeOwnPasswordCustomDataRole", db:"admin" } ]
}
)
要向現有用戶授予新角色,請使用db.grantRolesToUser()
。
執行過程
第一步:使用相應的許可權連接到MongoDB
使用“先決條件”部分指定的許可權連接到 mongod
或 mongos
。
以下過程使用在“啟用認證”中創建的用戶:myUserAdmin
。
$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
要檢查您是否具有先決條件部分中指定的許可權以及查看用戶資訊,請使用帶有--showPrivileges
選項的usersInfo
命令。
第二步:更改您的密碼和自定義數據
使用db.updateUser()
方法來更新密碼和自定義數據。
例如,以下操作將用戶的密碼更改為:KNlZmiaNUp0B
,並將自定義數據更改為{title:“Senior Manager”}
:
use test
db.updateUser(
"user123",
{
pwd: "KNlZmiaNUp0B",
customData: { title: "Senior Manager" }
}
)