如何以非管理员身份更改我的mongoDB用户密码?

问题描述 投票:0回答:2

我知道我可以通过运行db.changeUserPassword()作为MongoDB管理员来更改用户的密码。但是,作为没有管理员权限的用户,我可以使用自己的帐户更改密码吗?

谢谢,

虽然Gergo提供的解决方案有效。但我必须创建一个新角色才能使其发挥作用。我认为changeOwnPassword应该是一个内置的权限,不需要额外的管理工作。为了能够更改用户自己的密码而创建专用角色在MongoDB中是过度的。

mongodb authentication change-password
2个回答
5
投票

如果您具有必要的权限,则可以更改自己的密码。您可以通过运行此命令来验证您是否具有必要的权限:

db.runCommand(
  {
    usersInfo:"username",
    showPrivileges:true
  }
)

如果它包含changeOwnPassword,那么您可以更改密码:

db.runCommand(
    { updateUser: "username",
      pwd: "password"
    }
)

您可以在MongoDB documentation找到更多信息。


1
投票

在admin数据库中,使用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"})
© www.soinside.com 2019 - 2024. All rights reserved.