任何人都可以解释mongodb3.4.5中两个用户之间的区别

时间:2017-08-20 05:07:27

标签: node.js mongodb createuser

//the first user
{
    "_id" : "admin.guguji55",
    "user" : "guguji55",
    "db" : "admin",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

//the second user
{
    "_id" : "test.guguji66",
    "user" : "guguji66",
    "db" : "test",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

我创建了两个用户,'guguji55'无法连接我的测试数据库,但'guguji66'可以做到。我不知道为什么。我的nodejs连接代码如下:

MongoClient.connect('mongodb://guguji66:du****kuan****@localhost:27017/test', function(err, db) {});

2 个答案:

答案 0 :(得分:0)

 //the first user
    {
        "_id" : "admin.guguji55",
        "user" : "guguji55",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                }
        ]
}
 //the second user
{
        "_id" : "test.guguji66",
        "user" : "guguji66",
        "db" : "test",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                }
        ]
}

参考上面的块,您为admin数据库创建了第一个用户(guguji55)。和测试数据库的第二个用户(guguji66)。 并且您试图将测试数据库与您无法连接的第一个用户连接起来。

答案 1 :(得分:0)

让我向您解释具体情况,您的用户发生了什么。 当您创建第一个用户guguji55时,您就在数据库admin内。所以用户创建了admin数据库的链接。

//the firsr user
{
    "_id" : "admin.guguji55",
    "user" : "guguji55",
    "db" : "admin",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

第二个用户在test数据库中创建,因此它链接到测试数据库,这就是您无法通过guguji55访问测试数据库的原因。

<强> 解决方案: 删除第一个用户guguji55并重新创建它,无需在任何数据库中或在test数据库内部。

有关详细参考,请参阅此处 link