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