【问题标题】:How to change my mongoDB user password as non administrator?如何以非管理员身份更改我的 mongoDB 用户密码?
【发布时间】:2014-07-13 23:44:07
【问题描述】:

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

谢谢,

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

【问题讨论】:

    标签: mongodb authentication change-password


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 但根据docs.mongodb.org/manual/reference/built-in-roles,您需要具有 userAdmin 角色才能运行 changePassword 操作。但这太强大了,因为您可以授予自己管理员角色。这不是我想要的。
    • changePasswordchangeOwnPassword 不一样。您可以创建具有changeOwnPassword 权限的用户定义角色并将该角色授予用户。
    • 没有changeOwnPassword角色。 mongos> db.createUser( ... { ... user: "john", ... pwd: "john", ... role: ["changeOwnPassword", "readWrite" ] ... } ... ) ; 2014-05-24T14:48:32.467-0600 错误:无法添加用户:在 src/mongo/shell/db.js:1004 中找不到角色“changeOwnPassword@mydb”
    • changeOwnPassword 是特权,而不是角色。正如我所说,您需要创建一个具有该权限的用户定义角色。 docs.mongodb.org/manual/tutorial/define-roles
    • { resource: {cluster: true}, actions: [ "changeOwnPassword" ] }
    【解决方案2】:

    在 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"})
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 2020-09-08
      • 2013-08-01
      • 1970-01-01
      相关资源
      最近更新 更多