我们似乎找不到任何关于在特定数据库上运行 mongodump
需要哪些权限(用户角色)的结论性文档。
假设我有一个名为 x
的数据库和一个用户 y
,其角色为 roles: [ "readWrite", "dbAdmin"]
,以及 admin
集合上的 2 个用户 a
和 b
与 roles: [ "userAdminAnyDatabase"]
和roles: [ "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 }
我们肯定遗漏了一些明显的东西,但是 mongodump 在转储数据库时会寻找什么以及它需要什么权限?
PS:作为奖励,我们想弄清楚转储特定集合以及所有数据库需要哪些用户角色。
最佳答案
幸运的是mongodump 3.0正在接受跳过某些集合的选项。
这解决了我没有管理员访问数据库来调整权限的问题。 请记住,您将不再创建完整备份。
mongodump --excludeCollection=system.indexes
或
mongodump --excludeCollectionsWithPrefix=system
关于mongodb - 使用 mongodump 的最低权限(转储特定数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490291/