查询system.profile的mongodb备份角色错误

时间:2014-06-13 18:18:58

标签: mongodb

我有一个具有备份角色的mongo用户,在运行mongodump时,我收到以下错误:

014-06-13T14:10:53.226-0400    test.system.profile to /backup/mongodb/06-13-2014/test/system.profile.bson
assertion: 11010 count fails:{ ok: 0.0, errmsg: "not authorized on test to execute command { count: "system.profile", query: {} }", code: 13 }

以下是用户设置:

"_id" : "admin.backupAdmin",
    "user" : "backupAdmin",
    "db" : "admin",
    "roles" : [
        {
           "role" : "backup",
           "db" : "admin"
        }
    ]

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您使用的备用角色提供了足够的权限,可以使用MongoDB Management Service (MMS)备用代理使用mongodump或备份整个mongod instance

要备份给定数据库,您必须对数据库具有读取访问权限。要在数据库中备份 system.profile 集合,您必须读取访问数据库中的某些系统集合。

所以如果你有single instance足以担任以下角色:

db.grantRolesToUser("backupUser", [{role: "dbAdmin", db:"admin"}])

如果您维持任何shardreplica您可以担任以下角色:

db.grantRolesToUser("backupUser", [{role: "clusterAdmin", db:"admin"}])

答案 1 :(得分:2)

如果有人仍然有问题。这是MongoDB bult-in角色中的错误:https://jira.mongodb.org/browse/SERVER-21724

如果您不想更新,请在不修改dbAdmin的情况下进行在线修复:

db.createRole({
  role: "backup_fix",
  privileges: [
     { resource: { db: "", collection: "system.profile" }, actions: [ "find"] },
  ],
  roles: [
  ]
})

db.grantRolesToUser("YOUR_BACKUP_USER", [{"role": "backup_fix", "db": "admin"}]);

答案 2 :(得分:0)

我认为您需要dbAdmin角色来备份system.profile

这可能不是最好的方法,但可以通过为备份用户授予dbAdminAnyDatabase角色来修复错误。

db.grantRolesToUser("backupUser", [{role: "dbAdminAnyDatabase", db:"admin"}])