设置MongoDB进行多数据库身份validation

我有一个具有常规身份validation设置的MongoDB,因此您需要用户名和密码才能连接到数据库(configuration中的auth=true )。 我正在运行的问题是,我有一些需要连接到该数据库的脚本,然后创build一个新的,复制一些数据,然后在某个时间点删除数据库。 问题是主数据库的用户似乎无法创build一个新的数据库。

我已经通过他们的文档挖掘,但还没有find任何东西。 我想比较我正在寻找给MySQL用户create databasedrop database的能力。

这看起来需要几个不同的特权。

  • clusterAdmin : dropDatabase ,它允许删除任何数据库。
  • 任何数据库angular色 :readWriteAnyDatabase,允许从任何数据库读写; 需要在dynamic创build的数据库上运行。

我还没有想出你需要创build一个数据库,但是这个权利可能直接从readWriteAnyDatabaseinheritance。

你应该有一个“root”用户(比如在MySQL中)并将其用于pipe理/操作任务:

 db.addUser({user: "root", pwd: "123456", roles: [ "userAdminAnyDatabase", "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin" ]})) // change PW 

这个用户将能够做任何事情:

  • 创build/更改用户
  • 创build/删除DBS
  • 转储/恢复

请注意,您还应该添加:

 setParameter = enableLocalhostAuthBypass=0 

防止本地用户从本地主机连接时出现“root”。

普通用户(非pipe理员)最多应该拥有以下权限:

 "read", "readWrite", "dbAdmin" 

更多信息可以在这里find: http : //docs.mongodb.org/manual/reference/user-privileges/

编辑:clusterAdmin是创build数据库…