Mongo DB在哪里保留用户帐户?

时间:2016-12-25 16:22:46

标签: mongodb authentication

我是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。那应该在哪里?在管理员表格或与之相关的表格中?

1 个答案:

答案 0 :(得分:0)

这取决于。策略是将用户限制在他们将执行操作的数据库中。

每个数据库的所有管理员用户都应该进入各自的数据库。

让我告诉你这一切是如何运作的。 docs 中提供了更多详细信息。

root

使用root创建超级用户,以授予管理数据库中所有角色的所有权限,并可以在其他数据库中执行操作。

您可以自定义具有不同角色的管理员用户,以便进行更严格的管理。

管理数据库中只有很少的管理角色。

Root用户现在可以执行以下任何操作。

dbOwner

使用dbOwner角色创建管理员用户以授予特定数据库中的所有权限,包括数据库的数据库管理和用户管理。

<强> userAdmin

使用userAdmin角色创建用户,以在特定数据库中授予用户管理权限。

dbOwner用户和userAdmin用户都可以使用用户定义的角色(read和readWrite)在特定数据库中创建用户。

此外,您可以使用自定义角色和权限创建用户,从而实现细粒度控制。