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" }
   }
)