MongoDB 根用户无法访问配置数据库

MongoDB 根用户无法访问配置数据库

我正在尝试使用 在 mongoDB 实例(版本 4.4)上设置备份mongodump。这需要访问config数据库,而我的 mongo 用户尽管担任该角色,却没有该权限root。(据我了解内置角色的文档,具有该角色的用户root应该能够备份实例上的所有数据库。)

当我尝试运行时mongodump,出现此错误:

root@mongo-db1:/srv/mongo# mongodump --username=rcroot --password="secret" --out=/var/backups/20200925
2020-09-26T05:40:20.138+0000    Failed: error counting config.system.indexBuilds: not authorized on config to execute command { count: "system.indexBuilds", query: {}, $readPreference: { mode: "secondaryPreferred" }, $db: "config" }

显然我的用户无权访问config。这是我的用户:

rs0:PRIMARY> db.getUser("rcroot")
{
        "_id" : "admin.rcroot",
        "userId" : UUID("81fc86ff-6d12-4d23-83ab-7fc2591516a2"),
        "user" : "rcroot",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                },
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}

如果我以 root 用户身份登录到mongoshell 并尝试访问config数据库中的任何内容,我会收到与上述类似的错误。我确实启用了身份验证,因为我mongod从以下--auth标志开始:

mongod --auth --replSet rs0 --keyFile /data/db/keyfile --enableMajorityReadConcern false

所以我的问题是:我需要做什么才能授予该用户root对我的 mongo 实例上的所有数据库的真正访问权限?

答案1

事实证明,这是由于mongodump可执行文件和mongod服务器之间的版本不匹配造成的。(我在 docker 容器中运行mongod,并尝试从安装了不同版本工具的容器外部的主机进行备份。)

当我切换到mongodump服务器版本附带的版本时,它运行良好。

相关内容