说我有一个名为x的数据库和一个用户y,它具有以下角色角色:[“readWrite”,“dbAdmin”]以及管理员集合中的两个用户a和b:角色:[“userAdminAnyDatabase”]和角色: [“dbAdminAnyDatabase”],似乎没有人有正确的权限来运行mongodump:
mongodump --db x --username y --password --authenticationDatabase x Tue Dec 10 17:04:23.901 x.system.users to dump/x/system.users.bson assertion: 11010 count fails:{ ok: 0.0, errmsg: "unauthorized" } mongodump --db x --username a --password --authenticationDatabase admin Tue Dec 10 17:06:19.674 DATABASE: x to dump/x assertion: 13106 nextSafe(): { $err: "not authorized for query on x.system.indexes", code: 16550 } mongodump --db x --username b --password --authenticationDatabase admin Tue Dec 10 17:08:20.678 DATABASE: x to dump/x assertion: 13106 nextSafe(): { $err: "not authorized for query on x.system.namespaces", code: 16550 }
我们必须遗漏一些明显的东西,但是在转储数据库时需要什么权限呢?
PS:作为一个奖励,我们想知道需要什么角色来转储特定的集合,以及所有的数据库。
幸运的是, mongodump 3.0正在接受跳过某些集合的选项。这解决了我的问题没有管理员访问数据库来调整权限。请记住,您不会再创建完整的备份。
mongodump --excludeCollection=system.indexes
要么
mongodump --excludeCollectionsWithPrefix=system
精彩评论