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

时间:2014-05-24 20:04:28

标签: mongodb authentication change-password

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

谢谢,

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

2 个答案:

答案 0 :(得分:4)

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

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

如果它包含changeOwnPassword,则可以更改密码:

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

您可以在MongoDB documentation

中找到更多信息

答案 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"})