我正在使用以下凭据登录test
数据库
username : testUser
password : pass
用户仅readWrite
有权访问数据库。我想将当前用户的密码更改为pass123
。
我尝试了以下两个选项
db.changeUserPassword("testUser", "pass123")
db.updateUser("testUser",{pwd: "pass123"})
两者均失败,并分别出现以下错误
错误:未经测试授权执行命令
错误:更新用户失败:未经测试授权执行命令 {updateUser:“ testUser”,pwd:“ xxx”}
在没有管理员角色帮助的情况下,是否可以更改当前用户的密码?
更新
如果不允许用户更改其他用户的密码,这很有意义。但是为什么限制用户更改自己的密码。
如何处理以下情况?
考虑如果我的公司政策强制所有数据库用户每30天更改一次密码,则根据解决方案,用户必须要求管理员更改密码。
答案:
在管理数据库中,使用changeOwnPassword
操作创建一个新角色。
use admin
db.createRole(
{ role: "changeOwnPasswordRole",
privileges: [
{
resource: { db: "", collection: ""},
actions: [ "changeOwnPassword" ]
}
],
roles: []
}
)
创建具有changeOwnPasswordRole
角色以及其他角色的新用户
use test
db.createUser(
{
user:"user123",
pwd:"12345678",
roles:[ "readWrite", { role:"changeOwnPasswordRole", db:"admin" } ]
}
)
登录上述用户凭据
使用以下命令更新自己的密码
db.updateUser("user123",{pwd: "pass123"})
Change Your Password and Custom Data
How to change my mongoDB user password as non administrator?
这些链接为我提供了上述解决方案,而不是标记为重复的链接。
我已经读过How do I change a MongoDB user's password?,它是 有用,但未解决如何更改自己的密码。请删除 DUPLICATE标志。