MongoDB应该将用户放在admin db或local db中

时间:2018-03-23 08:21:47

标签: mongodb

MongoDB中有关于我应该将数据库用户放在哪里的最佳做法吗?

我只是设置了一个本地MongoDB服务器,并且我已经在管理数据库中添加了用户,并授予他们访问"他们的" (他们的意思是用户可以访问的唯一数据库)数据库。

你认为把用户放在"他们的"数据库而不是管理数据库?

1 个答案:

答案 0 :(得分:1)

无论用户是authentication database,Mongo始终会将用户信息存储在admin中。

  

MongoDB将所有用户信息(包括名称,密码和用户的身份验证数据库)存储在admin数据库的system.users集合中。

请参阅centralized-user-datasystem-users-collection

当您创建用户并授予该用户访问单个数据库(即其身份验证数据库)的权限时,该信息可以存储在admin数据库中。

所以,这不是一个“最佳实践”的问题;在admin中存储用户详细信息是MongoDB的选择,由user management commands实现。

更新以回复此评论:

  

好的,所以用户总是位于admin db中,但我也可以将“duplicates”添加到其他dbs中?也许问题应该是将用户添加到其他“非管理员”dbs是否有任何优势?

如果您打算让一个用户可以访问多个数据库,那么创建一个在每个数据库中都有角色的用户,而不是多次创建该用户,即在每个数据库中创建一次。例如:

use admin;
db.createUser({user:'userName', pwd:'passwordValue', roles:[
    {role:'readWrite', db:'DatabaseA'},
    {role:'readWrite', db:'DatabaseB'}
]});