Mongodb MongoError:验证失败的mongoose连接字符串
我可以通过终端连接到DB,但使用mongoose和gulp会出现此错误。 mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:246 MongoError:身份验证失败 我的连接字符串是: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
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 });