我有一个具有备份角色的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"
}
]
非常感谢任何帮助。
答案 0 :(得分:2)
您使用的备用角色提供了足够的权限,可以使用MongoDB Management Service (MMS)
备用代理使用mongodump
或备份整个mongod instance
。
要备份给定数据库,您必须对数据库具有读取访问权限。要在数据库中备份 system.profile 集合,您必须读取访问数据库中的某些系统集合。
所以如果你有single instance
足以担任以下角色:
db.grantRolesToUser("backupUser", [{role: "dbAdmin", db:"admin"}])
如果您维持任何shard
或replica
您可以担任以下角色:
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"}])