Je peux me connecter à la base de données via le terminal, mais obtenir cette erreur en utilisant mangouste et gulp. mongoose/node_modules/mongodb/lib/mongodb/connection/base.js: 246 MongoError: échec de l'authentification
Ma chaîne de connexion est:
mongodb://usr:psw@localhost:27017/dbname
Une idée de ce que ça peut être?
J'ai installé MEAN à https://bitnami.com/stack/mean pour Windows 7 Lors de l'installation, je crée le mot de passe est 123456
Syntaxe make connect to mongodb with mongoose
mongoose.connect("mongodb://[usr]:[pwd]@localhost:[port]/[db]",{auth:{authdb:"admin"}});
Si vous n'avez pas
{auth:{authdb:"admin"}}
Vous obtiendrez le message d'erreur "MongoError: échec de l'authentification"
Exemple: 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
il suffit d'ajouter ?authSource=yourDB&w=1
à la fin de l'URL de la base de données
mongoose.connect('mongodb://user:password@Host/yourDB?authSource=yourDB&w=1')
ce travail pour moi. &w=1
est important
Vous voudrez peut-être faire quelque chose comme ça ...
var opt = {
user: config.username,
pass: config.password,
auth: {
authdb: 'admin'
}
};
var connection = mongoose.createConnection(config.database.Host, 'mydatabase', config.database.port, opt);
L'option 'authdb' est la base de données sous laquelle vous avez créé l'utilisateur.
mongoose.connect("mongodb://[Host]/[db]", { auth:{
authdb: "admin",
user: [username],
password: [pw]
}}).then(function(db){
// do whatever you want
mongoose.connection.close() // close db
})
Avez-vous un utilisateur configuré pour dbname? Par défaut, aucun utilisateur n'est obligé de se connecter à la base de données, sauf si vous en avez explicitement défini un. Si ce n'est pas le cas, essayez simplement de vous connecter à mongodb://localhost:27017/dbname
et voyez si vous obtenez toujours une erreur.
J'ai trouvé la solution hier, on dirait que lorsque vous créez un utilisateur à partir du shell mongo, il crée SCRAM-SHA-1 au lieu de MongoDB-CR. Donc, la solution pour créer un nouvel utilisateur avec l'authentification MongoDB-CR.
Cela a fonctionné pour moi pour mongod --version = db version v3.6.13
mongoose.connect('mongodb://localhost/expressapi', {
auth: {
authdb: "admin",
user: "root",
password: "root",
}
});
mongo mongodb://usr:psw@localhost:27017/dbname
Avec les changements ci-dessus, il s'est connecté avec succès.
assurez-vous simplement que votre base de données est créée. et aussi si votre utilisateur n'est pas ajouté dans la base de données d'administration, assurez-vous de l'ajouter en mettant db.createUser (... {user: 'admin', pwd: 'admin', roles: ['root']}. ..)