更改密码和自定义数据

在本页面

Overview

具有适当特权的用户可以更改自己的密码和自定义数据。 Custom data存储可选的用户信息。

Considerations

要生成用于此过程的强密码,可以使用opensslUtil 的rand命令。例如,向openssl rand发出以下选项,以创建 48 个伪随机字节的 base64 编码的字符串:

openssl rand -base64 48

Prerequisites

要修改您自己的密码和自定义数据,您必须具有分别在用户数据库上授予changeOwnPasswordchangeOwnCustomData actions的特权。

以具有特权的用户身份进行连接以 Management 用户和角色。

具有特权来连接到mongodmongos来 Management 用户和角色,例如具有userAdminAnyDatabase角色的用户。以下过程使用在Enable Auth中创建的myUserAdmin

mongo --port 27017 -u myUserAdmin -p 'abc123' --authenticationDatabase 'admin'

创建具有适当特权的角色。

admin数据库中,create具有changeOwnPasswordchangeOwnCustomData的新角色。

use admin
db.createRole(
   { role: "changeOwnPasswordCustomDataRole",
     privileges: [
        {
          resource: { db: "", collection: ""},
          actions: [ "changeOwnPassword", "changeOwnCustomData" ]
        }
     ],
     roles: []
   }
)

添加具有此角色的用户。

test数据库中,create具有创建的"changeOwnPasswordCustomDataRole"角色的新用户。例如,以下操作将创建一个同时具有内置角色readWrite和用户创建的"changeOwnPasswordCustomDataRole"的用户。

use test
db.createUser(
   {
     user:"user123",
     pwd:"12345678",
     roles:[ "readWrite", { role:"changeOwnPasswordCustomDataRole", db:"admin" } ]
   }
)

要授予现有用户新角色,请使用db.grantRolesToUser()

Procedure

以适当的权限连接。

以具有适当特权的用户身份连接到mongodmongos

例如,以下操作以在Prerequisites部分中创建的user123连接到 MongoDB。

mongo --port 27017 -u user123 -p '12345678' --authenticationDatabase 'test'

要检查您是否具有Prerequisites部分中指定的特权以及查看用户信息,请使用带有showPrivileges选项的usersInfo命令。

更改密码和自定义数据。

使用db.updateUser()方法更新密码和自定义数据。

例如,以下操作将用户密码更改为KNlZmiaNUp0B并将自定义数据更改为{ title: "Senior Manager" }

use test
db.updateUser(
   "user123",
   {
      pwd: "KNlZmiaNUp0B",
      customData: { title: "Senior Manager" }
   }
)