MongoError:auth失败的mongoose连接sting

时间:2015-05-07 15:42:29

标签: mongodb mongoose connection-string

我可以通过终端连接到DB,但是使用mongoose和gulp来获取此错误。 猫鼬/ node_modules / MongoDB的/ lib中/的MongoDB /连接/ base.js:246 MongoError:auth failed

我的连接字符串是:

geography

知道它可以是什么吗?

11 个答案:

答案 0 :(得分:27)

我在https://bitnami.com/stack/mean为Windows 7安装了MEAN 安装时我输入的密码是123456

语法使用mongoose

连接到mongodb
mongoose.connect("mongodb://[usr]:[pwd]@localhost:[port]/[db]",{auth:{authdb:"admin"}});

如果没有

{auth:{authdb:"admin"}}

您将收到错误消息" MongoError:auth failed"

示例: mongo-test / app.js

var mongoose = require('mongoose');
mongoose.connect('mongodb://root:123456@localhost/test',{auth:{authdb:"admin"}});
mongoose.set('debug', true); // turn on debug

答案 1 :(得分:6)

您可能想要做这样的事情......

var opt = {
    user: config.username,
    pass: config.password,
    auth: {
        authdb: 'admin'
    }
};
var connection = mongoose.createConnection(config.database.host, 'mydatabase', config.database.port, opt);

' authdb' option是您在其下创建用户的数据库。

答案 2 :(得分:6)

只需将?authSource=yourDB&w=1添加到db url

的末尾即可
 mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')

这项工作对我而言。 &w=1很重要

答案 3 :(得分:3)

您是否为dbname设置了用户?默认情况下,除非您明确设置一个用户,否则不需要用户连接到数据库。如果还没有,您应该尝试连接到mongodb://localhost:27017/dbname并查看是否仍然出现错误。

答案 4 :(得分:3)

mongoose.connect("mongodb://[host]/[db]", { auth:{

    authdb: "admin",
    user: [username],
    password: [pw]

}}).then(function(db){

    // do whatever you want

    mongoose.connection.close() // close db

})

答案 5 :(得分:3)

有很多方法可以使其工作。这就是为我工作的[猫鼬v5.9.15]:

mongoose.connect('mongodb://localhost:27017/', {
    auth: {
        user:'root',
        password:'example'
    },
    authSource:"admin",
    useUnifiedTopology: true,
    useNewUrlParser: true
}

答案 6 :(得分:1)

我已经找到了解决方案,看起来当你从mongo shell创建用户时,它会生成SCRAM-SHA-1而不是MongoDB-CR。因此,使用MongoDB-CR身份验证创建新用户的解决方案。

MongoDB-CR Authentication failed

答案 7 :(得分:0)

只需确保您的数据库已创建。 如果您的用户未添加到管理数据库中,请确保通过put添加它 db.createUser( ... {user:' admin',pwd:' admin',角色:[' root']} ......)

答案 8 :(得分:0)

这对mongod --version = db版本v3.6.13来说很有效

mongoose.connect('mongodb://localhost/expressapi', {
    auth: {
        authdb: "admin",
        user: "root",
        password: "root",

    }
});

答案 9 :(得分:0)

mongo mongodb://usr:psw@localhost:27017/dbname
  • 密码只能是字母数字
  • 用户也应该在db'dbname'中可用(注意:即使用户是超级管理员)

通过上述更改,它成功连接。

答案 10 :(得分:0)

mongoose.connect("mongodb://[usr]:[pwd]@localhost:[port]/[db]",{ authSource: 'admin', useNewUrlParser: true, useUnifiedTopology: true });

我遇到了同样的错误。通过添加authSource连接功能选项解决了该问题。参见上面的代码。