MongoDB中有关于我应该将数据库用户放在哪里的最佳做法吗?
我只是设置了一个本地MongoDB服务器,并且我已经在管理数据库中添加了用户,并授予他们访问"他们的" (他们的意思是用户可以访问的唯一数据库)数据库。
你认为把用户放在"他们的"数据库而不是管理数据库?
答案 0 :(得分:1)
无论用户是authentication database,Mongo始终会将用户信息存储在admin
中。
MongoDB将所有用户信息(包括名称,密码和用户的身份验证数据库)存储在admin数据库的
system.users
集合中。
请参阅centralized-user-data和system-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'}
]});