mongodb备份角色-mongodump

mongodb备份角色-mongodump,mongodb,authentication,database-backups,Mongodb,Authentication,Database Backups,我们有一个开发团队,它将定期从开发人员中取出mongodump,然后将其恢复到本地主机以供工作。我们最近在mongodb中实现了身份验证,我希望我们的开发团队能够只在一个DB上执行mongodump,这样他们就可以将它恢复到本地主机上 我有一个从Admin继承备份角色的角色,但这是由我们的DBA备份整个系统 我的问题是,我如何允许特定用户使用此备份角色let call他们webdev for a specific DB let call it products 您可以在产品数据库中创建具有读取权

我们有一个开发团队,它将定期从开发人员中取出mongodump,然后将其恢复到本地主机以供工作。我们最近在mongodb中实现了身份验证,我希望我们的开发团队能够只在一个DB上执行mongodump,这样他们就可以将它恢复到本地主机上

我有一个从Admin继承备份角色的角色,但这是由我们的DBA备份整个系统


我的问题是,我如何允许特定用户使用此备份角色let call他们webdev for a specific DB let call it products

您可以在产品数据库中创建具有读取权限的用户:

> use products
> db.createUser(  {
 user: "webdev",
 pwd: "password",
 roles: [ "read" ]
 } )
请记住使用-excludeCollectionsWithPrefix=system调用mongodump


为了避免权限错误,假设您使用的是Mongo3

我使用的是MongoDB3.4版本,首先您需要一个管理员数据库的根访问权限,然后连接MongoShell

$mongo-u用户名-p xxxxxx-authenticationDatabase admin

连接mongoshell后,更改数据库

use products
更改数据库后,创建新用户

db.createUser(
  {
    user: "webdev",
    pwd: "xxxxx",
    roles: [
       { role: "read", db: "products" },
       { role: "backup", db: "products"}
    ]
  }
)
如上所述,webdev用户可以读取所有集合并进行备份访问

db.auth('webdev', 'xxxxx')
成功进行身份验证后,您可以从DEV服务器读取和获取备份

下面我提到了新webdev用户的mongodump查询

参考:

注:

不要在生产中频繁服用mongodump。这将影响到整个世界 性能问题。 不要将备份和恢复权限授予任何其他团队,如开发人员, 测试员……等 管理员或DBA仅在每次备份/恢复时执行此操作

多谢各位。如有任何问题,请回复


这就是确切的答案!非常感谢你anresk@UpTheCreek,在进行备份之前,如果您需要检查数据库或集合或读取某些特定数据…等等
db.auth('webdev', 'xxxxx')
mongodump --host hostname --port 27017 --username webdev --password xxxxx --authenticationDatabase products --db products --collection collection_name --out mongodump_outpath