我是MongoDB的新手,我一直在努力找到存储用户帐户的正确方法,但是没有找到关于这个主题的任何好的解释。
我的问题在哪里存储用户帐户以访问数据库,管理用户....
我在系统管理员表中创建了管理员用户。我想这是正确的地方。但是新数据库怎么样?
为了消除歧义,这里输出的是mongo shell
> use admin
switched to db admin
> db.getUsers();
[
{
"_id" : "admin.mongoadmin",
"user" : "mongoadmin",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
},
{
"_id" : "admin.api_videos",
"user" : "api_videos",
"db" : "admin",
"roles" : [
{
"role" : "dbOwner",
"db" : "videos"
}
]
}
]
> use videos
switched to db videos
> db.getUsers();
[
{
"_id" : "videos.api_videos",
"user" : "api_videos",
"db" : "videos",
"roles" : [
{
"role" : "dbOwner",
"db" : "videos"
}
]
}
]
>
因此,您可以清楚地看到我创建了两个用户api_videos
。那应该在哪里?在管理员表格或与之相关的表格中?
答案 0 :(得分:0)
这取决于。策略是将用户限制在他们将执行操作的数据库中。
每个数据库的所有管理员用户都应该进入各自的数据库。
让我告诉你这一切是如何运作的。 docs 中提供了更多详细信息。
root
使用root创建超级用户,以授予管理数据库中所有角色的所有权限,并可以在其他数据库中执行操作。
您可以自定义具有不同角色的管理员用户,以便进行更严格的管理。
管理数据库中只有很少的管理角色。
Root用户现在可以执行以下任何操作。
dbOwner
使用dbOwner角色创建管理员用户以授予特定数据库中的所有权限,包括数据库的数据库管理和用户管理。
<强> userAdmin 强>
使用userAdmin角色创建用户,以在特定数据库中授予用户管理权限。
dbOwner用户和userAdmin用户都可以使用用户定义的角色(read和readWrite)在特定数据库中创建用户。
此外,您可以使用自定义角色和权限创建用户,从而实现细粒度控制。