我知道我可以通过以MongoDB管理员身份运行db.changeUserPassword()来更改用户的密码。但是,作为没有管理员权限的用户,我可以使用自己的帐户更改密码吗?
谢谢,
虽然Gergo提供的解决方案有效。但我必须创建一个新角色才能使其发挥作用。我认为changeOwnPassword应该是一个内置的权限,不需要额外的管理工作。为了能够更改用户自己的密码而创建专用角色在MongoDB中是过度的。
答案 0 :(得分:4)
如果您拥有必要的权限,则可以更改自己的密码。您可以通过运行以下命令来验证您是否具有必要的权限:
db.runCommand(
{
usersInfo:"username",
showPrivileges:true
}
)
如果它包含changeOwnPassword
,则可以更改密码:
db.runCommand(
{ updateUser: "username",
pwd: "password"
}
)
中找到更多信息
答案 1 :(得分:1)
在管理数据库中,使用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"})