更改密码和自定义数据
在本页面
Overview
具有适当特权的用户可以更改自己的密码和自定义数据。 Custom data存储可选的用户信息。
Considerations
要生成用于此过程的强密码,可以使用openssl
Util 的rand
命令。例如,向openssl rand
发出以下选项,以创建 48 个伪随机字节的 base64 编码的字符串:
openssl rand -base64 48
Prerequisites
要修改您自己的密码和自定义数据,您必须具有分别在用户数据库上授予changeOwnPassword和changeOwnCustomData actions的特权。
以具有特权的用户身份进行连接以 Management 用户和角色。
具有特权来连接到mongod或mongos来 Management 用户和角色,例如具有userAdminAnyDatabase角色的用户。以下过程使用在Enable Auth中创建的myUserAdmin
。
mongo --port 27017 -u myUserAdmin -p 'abc123' --authenticationDatabase 'admin'
创建具有适当特权的角色。
在admin
数据库中,create具有changeOwnPassword和changeOwnCustomData的新角色。
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
以适当的权限连接。
例如,以下操作以在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" }
}
)