UserNotFound:找不到用户nodejs @sDatabase

时间:2018-06-18 19:10:40

标签: node.js linux database mongodb ubuntu

我知道这个问题类似于这个问题:

UserNotFound: Could not find user admin@automation

PyMongo - UserNotFound: Could not find user authenticated@admin

,但答案对我没有帮助,我现在非常绝望:(

我的后端异常:

  

来自客户端的sDatabase上的nodejs的SCRAM-SHA-1身份验证失败   20.345.145.12; UserNotFound:找不到用户nodejs @sDatabase

Mongo DB版本:3.2.20

我的前端例外:

  

MongoError:身份验证失败。

NodeJS版本:8.9.4

NodeJS mongodb依赖版:~3.0.10

我的用户:

> db.getUsers()
[
        {
                "_id" : "sDatabase.nodejs",
                "user" : "nodejs",
                "db" : "sDatabase",
                "roles" : [
                        {
                                "role" : "readWrite",
                                "db" : "sDatabase"
                        }
                ]
        }
]
>

我的nodeJS代码[与其他mongoDB数据库一起使用]:

var MongoClient = require('mongodb').MongoClient;

var pwd = "1234", //also tried with encodeURIComponent
    username = "nodejs",
    host = "1234.567.898.765",
    database = "sDatabase";

var url = "mongodb://" + username + ":" + pwd + "@" + host + ":27017/" + database; //also tried: ?authMechanism=SCRAM-SHA-1 //?authSource=sDatabase&w=1

MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    console.log("Database created!");
    db.close();
});

非常感谢每一个答案,评论和有用的信。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:我在规则中添加了“ dbAdmin”,现在可以使用了:

我如何创建工作用户:

db.createUser({user: "nodejs", pwd: "1234", roles: ["readWrite", "dbAdmin"]});