mongodb - 使用 mongodump 的最低权限(转储特定数据库)

标签 mongodb

我们似乎找不到任何关于在特定数据库上运行 mongodump 需要哪些权限(用户角色)的结论性文档。

假设我有一个名为 x 的数据库和一个用户 y,其角色为 roles: [ "readWrite", "dbAdmin"],以及 admin 集合上的 2 个用户 abroles: [ "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/

相关文章:

python - 如何获取集合中嵌套项的值?

node.js - Mongoose 批量插入错误

javascript - Mongoose/MongoDB - 更新子文档不起作用

java - 在 java 中将 RFC3339 DateTime 转换为 Date

javascript - Mongoose 在发布数据后复制条目

mongodb - 单帖子订阅在我的 meteor 代码中不起作用

mongodb - 在 Mongo 数据库实例中为特定数据库创建只读用户

javascript - 根据传递的变量动态添加子字段名称

mongodb - 蒙哥错误: E11000 duplicate key error collection for unique compound index