设置 MongoDB 进行多数据库身份验证

设置 MongoDB 进行多数据库身份验证

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

我查阅了他们的文档,但还没有找到任何东西。我把寻找的东西比作让 MySQL 用户能够create databasedrop database

答案1

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

  • clusterAdmin删除数据库,允许删除任何数据库。
  • 任何数据库角色:readWriteAnyDatabase,允许从任何数据库进行读写;需要对动态创建的数据库进行操作。

我还没有弄清楚创建数据库需要什么,但该权利可能直接从 readWriteAnyDatabase 继承。

答案2

您应该有一个“根”用户(例如在 MySQL 中)并使用他执行管理/操作任务:

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

该用户将可以做任何事情:

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

请注意您还应该添加:

setParameter = enableLocalhostAuthBypass=0

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

普通用户(非管理员)最多应具有以下权限:

"read", "readWrite", "dbAdmin"

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

编辑:clusterAdmin 用于创建数据库……

相关内容