【问题标题】:do account in mongodb's admin database take precedence over accounts in "normal" databasesmongodb 管理数据库中的帐户是否优先于“普通”数据库中的帐户
【发布时间】:2014-04-16 06:10:25
【问题描述】:

只是一个关于 mongodb 中用户帐户的快速问题。

我在 admin 数据库中配置了以下用户:

> use admin
switched to db admin
> db.system.users.find({ user : "foobar_admin"}).pretty()
{
        "_id" : ObjectId("52024f53e513b080573d59de"),
        "otherDBRoles" : {
                "test" : [
                        "dbAdmin",
                        "readWrite"
                ]
        },
        "pwd" : "<pwdhash>",
        "roles" : [
                "read"
        ],
        "user" : "foobar_admin"
}
> 

以及在测试数据库上配置的以下用户

> use test
switched to db test
> db.system.users.find({ user : "abc_admin"}).pretty()
{
        "_id" : ObjectId("52024f97e513b080573d59e1"),
        "pwd" : "<pwdhash>",
        "roles" : [
                "readWrite"
        ],
        "user" : "foobar_admin"
}
> 

在 admin 数据库中设置的权限是否会覆盖在 test 数据库中设置的权限? IE,foobar_admin 在测试数据库上有 dbAdmin 和 readWrite 吗?一份文件是否优先于另一份文件?

【问题讨论】:

  • 最好的方法是测试,但我确实记得在文档中读过一些关于管理员用户在本地数据库中接管同名用户的内容。我个人从来没有在我的用户之间产生过这种模棱两可的情况,我尽量避免它
  • 是的,我继承了一些似乎在每个数据库中都有用户文档的东西,所以我正在清理它。我只是有点谨慎,因为数据库目前正在生产中,不能让它坏掉……我会在我的一个测试盒上做一些测试,看看我想出了什么。

标签: mongodb user-roles


【解决方案1】:

对于任何想知道的人来说,这两个凭据都不优先,而是 - 相关角色的应用取决于用户验证到的数据库。

所以在上面的例子中,

  • 如果foobar_admin 用户通过admin 数据库进行身份验证,则该用户将拥有dbAdminreadWrite 角色
  • 如果foobar_admin 用户针对test 数据库进行身份验证,则该用户将只有readWrite 角色

文档 (http://docs.mongodb.org/manual/reference/privilege-documents/) 似乎没有明确说明这一点。

感谢您忍受我的胡言乱语! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2019-04-17
    • 2011-03-10
    • 2019-06-25
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多