【问题标题】:issue in run mongostat for auth enabled mongodb为启用身份验证的 mongodb 运行 mongostat 时出现问题
【发布时间】:2015-10-07 12:05:31
【问题描述】:

我刚刚为mongodb实现了auth,有一个用户'admin' 在 db 'admin' 和 db 'mydb' 中的 'appadmin' 中一切正常。以下 是我的数据库身份验证设置:

use admin
db.auth(‘’, ‘’)
db.getUsers()
[
    {
        "_id" : "admin.admin",
        "user" : "admin",
        "db" : "admin",
        "roles" : [
            {
                "role" : "userAdminAnyDatabase",
                "db" : "admin"
            },
            {
                "role" : "clusterMonitor",
                "db" : "admin"
            }
        ]
    }
]


use mydb
db.auth()
db.getUsers()

    {
        "_id" : "mydb.appadmin",
        "user" : "mydb",
        "db" : "mydb",
        "roles" : [
            {
                "role" : "readWrite",
                "db" : "mydb"
            },
            {
                "role" : "userAdmin",
                "db" : "mydb"
            }
        ]
    }
].

如果我运行以下命令,

mongostat --username=admin --password=mypassword  --authenticationDatabase=admin
insert query update delete getmore command flushes mapped  vsize   res faults qr|qw ar|aw netIn netOut conn     time
    *0    *0     *0     *0       0     1|0       0 240.0M 678.0M 91.0M      0   0|0   0|0   79b    10k    1 11:49:18
    *0    *0     *0     *0       0     1|0       0 240.0M 678.0M 91.0M      0   0|0   0|0   79b    10k    1 11:49:19
    *0    *0     *0     *0       0     1|0       0 240.0M 678.0M 91.0M      0   0|0   0|0   79b    10k    1 11:49:20

但是当我运行时

* mongostat --username=appadmin --password=mypassword  --authenticationDatabase=mydb

        Failed: not authorized on admin to execute command { serverStatus: 1, recordStats: 0 },

所以我尝试在 mydb 中添加角色“clusterMonitor”。

db.updateUser(“appadmin”, {roles: [{role: "readWrite", db: “mydb”}, {role: "userAdmin", db: “mydb”}, {role: "clusterMonitor", db: “mydb”}]})
E QUERY    Error: Updating user failed: No role named clusterMonitor@mydb.

在启用了身份验证的 mongodb 中执行 mongostat 的最佳方法是什么?请帮助我解决问题或建议最佳身份验证设置。 注意:我的 mongodb 版本 3.0.6

【问题讨论】:

    标签: mongodb mongo-shell


    【解决方案1】:

    我终于找到了解决方案,我在 admin db 中添加了更多角色,

    use admin
    db.getUsers()
    
        {
            "_id" : "admin.admin",
            "user" : "admin",
            "db" : "admin",
            "roles" : [
                {
                    "role" : "userAdminAnyDatabase",
                    "db" : "admin"
                },
                {
                    "role" : "readWriteAnyDatabase",
                    "db" : "admin"
                },
                {
                    "role" : "dbAdminAnyDatabase",
                    "db" : "admin"
                },
                {
                    "role" : "clusterAdmin",
                    "db" : "admin"
                },
                {
                    "role" : "clusterMonitor",
                    "db" : "admin"
                }
            ]
        }
    ]
    

    并运行 mongostat --username=admin --password=mypassword --authenticationDatabase=admin,修复问题

    【讨论】:

    • 看来clusterMonitor 是运行 mongostat 的关键。
    • 我不明白。您提到mongostatappadmin 失败,但为admin 用户提供了解决方案?你能粘贴mongostat --username=appadmin --password=mypassword --authenticationDatabase=mydb的输出吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2021-07-25
    相关资源
    最近更新 更多