MongoDB更改用戶密碼和自定義數據

具有適當權限的用戶可以更改自己的密碼和自定義數據。 自定義數據存儲可選的用戶信息。

注意事項

在此過程要生成一個強大的密碼,您可以使用openssl實用程序的rand命令。 例如,使用以下選項發出openssl rand,以創建48個僞隨機字節的base64編碼字符串:

openssl rand -base64 48

先決條件

要修改自己的密碼和自定義數據,您必須具有在用戶數據庫上分別授予changeOwnPasswordchangeOwnCustomData操作的權限。

第一步:使用相應的權限連接到MongoDB

使用「先決條件」部分指定的權限連接到 mongodmongos

以下過程使用在「啓用認證」中創建的用戶:myUserAdmin

$ mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

第二步:使用適當的權限創建角色

在管理數據庫中,使用changeOwnPasswordchangeOwnCustomData創建一個新角色。

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

使用「先決條件」部分指定的權限連接到 mongodmongos

以下過程使用在「啓用認證」中創建的用戶: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" }
   }
)