我可以通过终端连接到DB,但是使用猫鼬和gulp会出现此错误。猫鼬/node_modules/mongodb/lib/mongodb/connection/base.js:246MongoError:身份验证失败
我的连接字符串是:
mongodb://usr:psw@localhost:27017/dbname
任何想法都可以吗?
我在Windows 7的https://bitnami.com/stack/mean安装了MEAN安装时,我的密码是123456
语法使与猫鼬连接到mongodb
mongoose.connect("mongodb://[usr]:[pwd]@localhost:[port]/[db]",{auth:{authdb:"admin"}});
如果没有
{auth:{authdb:"admin"}}
您将收到错误消息“ MongoError:身份验证失败”
示例: 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
只需将?authSource=yourDB&w=1
添加到数据库URL的末尾
mongoose.connect('mongodb://user:password@host/yourDB?authSource=yourDB&w=1')
为我工作。 &w=1
很重要
您可能想做这样的事情...
var opt = {
user: config.username,
pass: config.password,
auth: {
authdb: 'admin'
}
};
var connection = mongoose.createConnection(config.database.host, 'mydatabase', config.database.port, opt);
'authdb'选项是您在其下创建用户的数据库。
您是否为dbname设置了用户?默认情况下,除非您明确设置一个用户,否则不需要用户连接到数据库。如果还没有,则应该尝试连接到mongodb://localhost:27017/dbname
,看看是否仍然出现错误。
mongoose.connect("mongodb://[host]/[db]", { auth:{
authdb: "admin",
user: [username],
password: [pw]
}}).then(function(db){
// do whatever you want
mongoose.connection.close() // close db
})
我发现了解决方案层,看起来像是从mongo shell创建用户时,它使SCRAM-SHA-1代替了MongoDB-CR。因此,使用MongoDB-CR身份验证创建新用户的解决方案。
只需确保已创建数据库。并且如果您的用户未添加到管理数据库中,请确保通过添加将其添加db.createUser(... {user:'admin',pwd:'admin',roles:['root']}...)
这对mongod --version = db版本v3.6.13来说对我有用
mongoose.connect('mongodb://localhost/expressapi', {
auth: {
authdb: "admin",
user: "root",
password: "root",
}
});
mongo mongodb://usr:psw@localhost:27017/dbname
通过上述更改,它已成功连接。
有很多方法可以使它起作用。这就是为我工作的[猫鼬v5.9.15]:
mongoose.connect('mongodb://localhost:27017/', {
auth: {
user:'root',
password:'example'
},
authSource:"admin",
useUnifiedTopology: true,
useNewUrlParser: true
}