MongoDB - 未使用命令mongorestore恢复的用户

Fra*_* D. 7 mongodb mongorestore

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

除恢复用户外,所有测试均正常.

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

$ mongodump -u adm_dump --authenticationDatabase admin -d db_test --dumpDbUsersAndRoles -o /opt/backup/mongodump_db_test
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

已成功创建新数据库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
Run Code Online (Sandbox Code Playgroud)

我还授予"userAdmin"的角色,以adm_dump并没有成功做到操作几次.我应该给adm_dump用户另外一个特定的角色吗?

我读了doc并在googleDbUsersAndRoles/restoreDbUsersAndRoles选项上搜索,但没有发现任何相关内容.

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

CentOS 6.6上的MongoDB版本3.2.1

Bru*_*eJo 0

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

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

例子:

$ mongodump -u adm_dump --authenticationDatabase admin --dumpDbUsersAndRoles -o /opt/backup/mongodump_db_test
Run Code Online (Sandbox Code Playgroud)