8

我是 MongoDB 新手,我正在单个 MongoDB 实例中测试一些基本的备份和恢复操作。

除了恢复用户外,所有测试都运行良好。

我首先使用以下命令创建了测试数据库 ( db_test ) 的备份:

$ mongodump -u adm_dump --authenticationDatabase admin -d db_test --dumpDbUsersAndRoles -o /opt/backup/mongodump_db_test

adm_dump是我创建的具有“恢复”和“备份”角色的用户。

db_test数据库中存在 2 个用户,分别具有“readWrite”和“read”角色。所以我期待这两个用户都能恢复。

然后我将数据库恢复到数据库db_test_2(不存在):

$ mongorestore -u adm_dump --authenticationDatabase admin -d db_test_2 --restoreDbUsersAndRoles /opt/backup/mongodump_db_test/db_test

新数据库db_test_2已成功创建(所有集合都已恢复),但用户未在db_test2中恢复。

在日志尾部下方:

...
2016-06-29T18:28:26.429+0200    restoring users from /opt/backup/mongodump_db_test/db_test/$admin.system.users.bson
2016-06-29T18:28:26.464+0200    roles file '/opt/backup/mongodump_db_test/db_test/$admin.system.roles.bson' is empty; skipping roles restoration
2016-06-29T18:28:26.464+0200    restoring roles from /opt/backup/mongodump_db_test/db_test/$admin.system.roles.bson
2016-06-29T18:28:26.468+0200    done

我还将“userAdmin”角色授予adm_dump并进行了多次操作,但均未成功。我应该给adm_dump用户另一个特定的角色吗?

我阅读了文档并在 dumpDbUsersAndRoles / restoreDbUsersAndRoles 选项上进行了谷歌搜索,但没有发现任何相关内容。

从转储备份恢复用户时我错过了什么?

CentOS 6.6 上的 MongoDB 版本 3.2.1

4

1 回答 1

0

万一其他人试图这样做......

  1. 不要在 mongo 转储中指定数据库或集合。
  2. 以具有管理员权限的用户身份登录(也许adm_dump有这些权限?)
  3. 不要使用--dumpDbUsersAndRoles,这仅适用于您指定数据库时。请参阅文档

例子:

$ mongodump -u adm_dump --authenticationDatabase admin --dumpDbUsersAndRoles -o /opt/backup/mongodump_db_test
于 2019-08-13T04:40:36.757 回答