Mongodb MongoError:验证失败的mongoose连接字符串

Mongodb MongoError:验证失败的mongoose连接字符串,mongodb,mongoose,connection-string,Mongodb,Mongoose,Connection String,我可以通过终端连接到DB,但使用mongoose和gulp会出现此错误。 mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:246 MongoError:身份验证失败 我的连接字符串是: mongodb://usr:psw@localhost:27017/dbname 知道会是什么吗 是否为dbname设置了用户?默认情况下,除非显式设置数据库,否则不需要用户连接数据库。如果没有,您应该尝试连接到mongodb://loc

我可以通过终端连接到DB,但使用mongoose和gulp会出现此错误。 mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:246 MongoError:身份验证失败

我的连接字符串是:

mongodb://usr:psw@localhost:27017/dbname

知道会是什么吗

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

我发现解决方案更高,看起来当您从mongo shell创建用户时,它将使用SCRAM-SHA-1而不是MongoDB-CR。因此,使用MongoDB CR身份验证创建新用户的解决方案是可行的


您可能想做这样的事情

var opt = {
    user: config.username,
    pass: config.password,
    auth: {
        authdb: 'admin'
    }
};
var connection = mongoose.createConnection(config.database.host, 'mydatabase', config.database.port, opt);
“authdb”选项是您在其中创建用户的数据库。

我的意思是在windows 7上安装的 安装时,我的密码是123456

语法使用mongoose连接到mongodb

mongoose.connect("mongodb://[usr]:[pwd]@localhost:[port]/[db]",{auth:{authdb:"admin"}});
如果没有

{auth:{authdb:"admin"}}
您将收到错误消息“MongoError:auth failed”

示例:mongo测试/app.js

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

只需将authSource=yourDB&w=1添加到数据库url的末尾

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

这是我的工作
&w=1
很重要

只需确保已创建数据库即可。 而且,如果您的用户没有添加到管理数据库中,那么请确保通过 db.createUser( …{user:'admin',pwd:'admin',roles:['root']}
…)

这对我来说对mongod很有用——version=db version v3.6.13

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

    }
});
  • 密码应仅为字母数字
  • 数据库“dbname”中也应该有用户(注意:即使用户是超级管理员)

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

有很多方法可以使它工作。这就是我的工作原理[mongoose v5.9.15]:

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

我也犯了同样的错误。通过添加连接函数的
authSource
选项解决了此问题。请参阅上面的代码。

我有一个用户和密码,否则所有人都可以使用这些数据。我也尝试过根用户,但问题仍然存在。我使用的是猫鼬,只是对是否有其他人发布了类似的问题感兴趣…并在这里解决了)相同的问题。我注意到它只有在我做第二个或更高的数字db链接时才有问题,而不是我做的第一个链接。嘿,谢谢你的回答。我试试看。但是我们已经切换到sqlite了。是的,这对我很有效。很奇怪,从pymongo开始,它不需要authSource参数.mongoose.connect('mongodb://admin:password@localhost/some_db?authSource=admin&w=1',{})w=1的目的是什么?@RyanGriggs w选项请求确认写入操作已传播到指定数量的mongod实例或具有指定标记的mongod实例。这应该是文档中的默认方式。所有其他方式都会导致错误和混乱。祝贺我添加了
{auth:{authdb:{admin}}
,但仍然得到
“MongoError:auth失败”
错误[MongooseError]:Mongoose 5.x不再支持``Mongoose.connect(host,dbname,port)`或``Mongoose.createConnection(host,dbname,port)`。看见http://mongoosejs.com/docs/connections.html 对于支持的连接语法
(是的,我意识到5年过去了…访客信息)在从mongo节点驱动程序切换到mongoose时出现此问题。使用了相同的连接字符串,但我不断得到验证错误。我添加了authSource='admin',问题就解决了。这对我来说非常有效,谢谢!对于那些来寻找解决方案的人,你的答案是什么
mongo mongodb://usr:psw@localhost:27017/dbname
mongoose.connect('mongodb://localhost:27017/', {
    auth: {
        user:'root',
        password:'example'
    },
    authSource:"admin",
    useUnifiedTopology: true,
    useNewUrlParser: true
}
mongoose.connect("mongodb://[usr]:[pwd]@localhost:[port]/[db]",{ authSource: 'admin', useNewUrlParser: true, useUnifiedTopology: true });