Mongodb备份角色—mongodump



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

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

我的问题是,我如何允许这个备份角色被一个特定的用户(我们称之为"webdev")用于一个特定的数据库(我们称之为"产品")?

可以在products数据库中创建一个具有读权限的用户:

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

请记住使用--excludeCollectionsWithPrefix=system调用mongodump

mongodump --excludeCollectionsWithPrefix=system

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

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

$ mongo -u username -p xxxxxx——authenticationDatabase admin

连接完mongoshell后,修改数据库,

use products

修改DB后创建新用户,

db.createUser(
  {
    user: "webdev",
    pwd: "xxxxx",
    roles: [
       { role: "read", db: "products" },
       { role: "backup", db: "products"}
    ]
  }
)

上面我提到过,webdev用户可以读取所有的集合和备份访问。

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

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

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/备份

注意:

  1. 不要在生产中频繁使用mongodb。它会影响性能问题。
  2. 不要把备份和恢复权限给任何其他团队,比如开发者,测试人员,. .等
  3. Admin或DBA只在每次备份/恢复时执行。

    谢谢。

最新更新