我们有一个开发团队,会定期从DEV中取出mongodump,然后将其还原回本地主机进行工作。我们最近在mongodb中实现了身份验证,我希望能够允许我们的开发团队在一个数据库上执行mongodump,这样他们就可以将其恢复到本地主机。
我有一个角色从Admin继承备份角色,但这是我们的DBA备份整个系统。
我的问题是,如何允许特定用户使用此备份角色(让我们称之为“webdev”)为特定数据库(让我们称之为“产品”)?
答案 0 :(得分:3)
您可以使用读取权限在products
数据库中创建用户:
> use products
> db.createUser( {
user: "webdev",
pwd: "password",
roles: [ "read" ]
} )
请记得用--excludeCollectionsWithPrefix=system
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
注意:
管理员或DBA每次只备份/恢复。
谢谢。如有任何疑虑,请回复。