具有适当权限的用户可以更改自己的密码和自定义数据。 自定义数据存储可选的用户信息。
注意事项
在此过程要生成一个强大的密码,您可以使用openssl
实用程序的rand
命令。 例如,使用以下选项发出openssl rand
,以创建48
个伪随机字节的base64
编码字符串:
openssl rand -base64 48
要修改自己的密码和自定义数据,您必须具有在用户数据库上分别授予changeownpassword
和changeowncustomdata
操作的权限。
第一步:使用相应的权限连接到mongodb
使用“先决条件”部分指定的权限连接到 mongod
或 mongos
。
以下过程使用在“启用认证”中创建的用户:myuseradmin
。
$ mongo --port 27017 -u "myuseradmin" -p "abc123" --authenticationdatabase "admin"
第二步:使用适当的权限创建角色
在管理数据库中,使用changeownpassword
和changeowncustomdata
创建一个新角色。
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
使用“先决条件”部分指定的权限连接到 mongod
或 mongos
。
以下过程使用在“启用认证”中创建的用户: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" }
}
)