mongodb备份角色 - mongodump

时间:2016-10-13 13:10:36

标签: mongodb authentication database-backups

我们有一个开发团队,会定期从DEV中取出mongodump,然后将其还原回本地主机进行工作。我们最近在mongodb中实现了身份验证,我希望能够允许我们的开发团队在一个数据库上执行mongodump,这样他们就可以将其恢复到本地主机。

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

我的问题是,如何允许特定用户使用此备份角色(让我们称之为“webdev”)为特定数据库(让我们称之为“产品”)?

2 个答案:

答案 0 :(得分:3)

您可以使用读取权限在products数据库中创建用户:

> use products
> db.createUser(  {
 user: "webdev",
 pwd: "password",
 roles: [ "read" ]
 } )

请记得用--excludeCollectionsWithPrefix=system

打电话给mongodump
mongodump --excludeCollectionsWithPrefix=system

为了避免权限错误(假设您使用的是Mongo 3)

答案 1 :(得分:1)

我使用的是MongoDB3.4版本,首先你想要一个root用户访问admin数据库并连接mongo shell,

  

$ mongo -u username -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 --host hostname --port 27017 --username webdev --password xxxxx --authenticationDatabase products --db products --collection collection_name --out mongodump_outpath

参考:https://docs.mongodb.com/manual/reference/built-in-roles/#backup

注意:

  1. 不要经常在生产中使用mongodump。它会影响到 绩效问题。
  2. 不要为开发人员等任何其他团队提供备份和恢复访问权限 测试员,等等。
  3. 管理员或DBA每次只备份/恢复。

    谢谢。如有任何疑虑,请回复。