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

被咬

我们似乎找不到任何结论性文件来说明mongodump在特定数据库上运行需要哪些权限(用户角色)

说我有一个名为数据库x和用户y有以下角色就可以了roles: [ "readWrite", "dbAdmin" ],还有2个用户a,并badmin收集与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:作为奖励,我们想弄清楚转储特定集合以及所有数据库需要哪些用户角色。

被咬

TL; DR:对于mongodb 2.4,您至少需要一个具有read角色以及userAdmindb角色的用户否则,system.users.bson在此类数据库上转储时您将遇到我们在问题中遇到的错误


因此,我们忽略了一个重要参考: man mongodump

但是,您需要具有mongodump2.4.x才能查看相关部分,所以这里是通过mongodb github docs的参考

Required User Privileges
------------------------

.. note:: User privileges changed in MongoDB 2.4.

The user must have appropriate privileges to read data from database
holding collections in order to use :program:`mongodump`. Consider the
following :doc:`required privileges </reference/system-defined-roles>` for
the following :program:`mongodump` operations:

.. list-table::
   :header-rows: 1

   * - Task
     - Required Privileges

   * - All collections in a database except ``system.users``.
     - :authrole:`read`. [#read-or-read-write]_

   * - All collections in a database, including ``system.users``.
     - :authrole:`read` [#read-or-read-write]_ and :authrole:`userAdmin`.

   * - All databases. [#profiling-exception]_
     - :authrole:`readAnyDatabase`, :authrole:`userAdminAnyDatabase`,
       and :authrole:`clusterAdmin`. [#cluster-admin]_

See :doc:`/reference/system-defined-roles` and
:doc:`/reference/privilege-documents` for more information on user
roles.

.. [#read-or-read-write] You may provision :authrole:`readWrite`
   instead of :authrole:`read`.

.. [#cluster-admin] :authrole:`clusterAdmin` provides the ability to
   run the :dbcommand:`listDatabases` command, to list all existing
   databases.

.. [#profiling-exception] If any database runs with profiling enabled,
   :program:`mongodump` may need the
   :authrole:`dbAdminAnyDatabase` privilege to dump the
   ``system.profile`` collection.

PS:当前无法跳过某些集合,因此,如果您仅对数据库具有read或readWrite角色,则需要分别转储每个集合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不使用mongodump命令转储和还原mongo数据库

来自分类Dev

不使用mongodump命令转储和还原mongo数据库

来自分类Dev

恢复Postgres数据库转储

来自分类Dev

FTP数据库转储

来自分类Dev

导入数据库转储——PSQL

来自分类Dev

mysql数据库转储脚本添加功能以跳过转储的数据库

来自分类Dev

使用Entity Framework数据库优先方法的最低数据库用户权限

来自分类Dev

使用Entity Framework数据库优先方法的最低数据库用户权限

来自分类Dev

JSON 转储仅回显特定数据

来自分类Dev

使用PHP将Wiktionary XML数据转储到MySQL数据库中

来自分类Dev

如何使用Qt转储SQLite数据库表(使用BLOB类型)?

来自分类Dev

如何使用sqlalchemy获取在sqlite中创建的数据库的sql转储

来自分类Dev

如何使用卷从Docker中的转储或SQL文件还原数据库?

来自分类Dev

我可以使用mysql(不是mysqldump)转储数据库吗?

来自分类Dev

如何在不将数据库与生产转储对齐的情况下使用FlywayDB?

来自分类Dev

使用Marshal将Sqlite内存数据库转储到磁盘

来自分类Dev

如何使用命令行转储Mysql数据库?

来自分类Dev

MongoDB-使用oplog在不同的主机,数据库之间转储和还原

来自分类Dev

将会话转储到SQL数据库中

来自分类Dev

将postgres数据库转储导入本地应用

来自分类Dev

从mysql数据库转储中排除视图

来自分类Dev

如何获取转储db2数据库?

来自分类Dev

转储在Docker容器上运行的mongo数据库

来自分类Dev

如何还原从phpMyAdmin转储的MySQL数据库?

来自分类Dev

从mysql数据库转储中排除视图

来自分类Dev

Django sqlite3数据库转储

来自分类Dev

R解析数据库转储以查找联接

来自分类Dev

Oracle 数据库转储的 Shell 脚本

来自分类Dev

H2 数据库转储

Related 相关文章

热门标签

归档