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

joh*_*sam 1 authentication change-password mongodb

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

谢谢,

尽管Gergo提供的解决方案有效。但是我必须创建一个新角色才能正常工作。我认为changeOwnPassword应该是内置的特权,不需要其他管理工作。在MongoDB中,仅仅为了能够更改用户自己的密码而创建专用角色是过大的。

Ger*_*osi 6

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

db.runCommand(
  {
    usersInfo:"username",
    showPrivileges:true
  }
)
Run Code Online (Sandbox Code Playgroud)

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

db.runCommand(
    { updateUser: "username",
      pwd: "password"
    }
)
Run Code Online (Sandbox Code Playgroud)

您可以在MongoDB文档中找到更多信息。


Man*_*ani 5

在管理数据库中,使用changeOwnPassword 操作创建一个新角色。

use admin
db.createRole(
   { role: "changeOwnPasswordRole",
     privileges: [
        {
          resource: { db: "", collection: ""},
          actions: [ "changeOwnPassword" ]
        }
     ],
     roles: []
   }
)
Run Code Online (Sandbox Code Playgroud)

创建一个具有changeOwnPasswordRole角色和其他角色的新用户

use test
db.createUser(
   {
     user:"user123",
     pwd:"12345678",
     roles:[ "readWrite", { role:"changeOwnPasswordRole", db:"admin" } ]
   }
)
Run Code Online (Sandbox Code Playgroud)

登录上述用户凭据

使用以下命令更新自己的密码

db.updateUser("user123",{pwd: "pass123"})
Run Code Online (Sandbox Code Playgroud)