【问题标题】:MongoDB: shutdownServer failed: not authorized on admin to execute command db.grantRolesToUser db.createUserMongoDB:shutdownServer 失败:管理员未授权执行命令 db.grantRolesToUser db.createUser
【发布时间】:2015-10-30 06:31:50
【问题描述】:

我想将独立集转换为副本集。该过程的第一步提到关闭独立的 mongod 实例。实际上 db.shutdownServer() 命令会引发以下错误: shutdownServer 失败:管理员未授权执行命令。 内置角色 hostManager 应授权此命令。所以我尝试了: db.grantRolesToUser("lala", [{role: "hostManager", db: "myDB"}]) 因此抛出错误:管理员未授权执行命令。我正在使用 MongoDB shell 版本:3.0.5,用户具有以下角色:dbOwner、userAdmin、readWrite。 另一种方法是使用:db.createUser({user: "hello", pwd: "world", roles: [{role: "hostManager", db: "myDB"}]}),它会抛出错误:无法添加用户:没有名为 hostManager@myDB 的角色。 我真的不明白如何关闭。

【问题讨论】:

    标签: mongodb admin shutdown unauthorized replicaset


    【解决方案1】:

    试试这个:

    db.updateUser("root",{roles:[{"role" : "userAdminAnyDatabase","db" : "admin"},{"role" : "dbOwner","db" : "admin"} ,{"role" : "clusterAdmin", "db": "admin"}]})

    只需使用您的用户名而不是“root”。

    【讨论】:

      【解决方案2】:

      当使用 --auth 选项打开 Mongod 实例时,这意味着您的数据库已通过身份验证。但是,与 db 的连接是在没有任何身份验证的情况下建立的,但是您无法执行任何操作,因为它会在您的描述中引发错误,因为您没有经过身份验证。现在切换到经过身份验证的数据库,然后使用

      执行身份验证

      db.auth(用户名、密码)

      现在您可能被授权在 db 上执行授权操作。立即尝试关闭服务器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-06
        • 1970-01-01
        • 2019-07-25
        • 1970-01-01
        • 2020-02-02
        • 1970-01-01
        • 2015-07-31
        • 2021-09-07
        相关资源
        最近更新 更多