node.js - probar - No se puede conectar a mongolab, Obtención de MongoError: autenticación fallida
passport js tutorial (9)
Recientemente he creado una cuenta en mongoLab. Cuando intento conectarme a la base de datos con la siguiente declaración.
var mongoose = require(''mongoose'');
mongoose.connect(''mongodb://mk:[email protected]:47742/mkdb'');
Siempre estoy recibiendo el siguiente error
MongoError: auth failed
at Function.MongoError.create (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
at /Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:793:66
at Callbacks.emit (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:94:3)
at null.messageHandler (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:235:23)
at Socket.<anonymous> (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:259:22)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Socket.Readable.push (_stream_readable.js:126:10)
at TCP.onread (net.js:538:20)
1- Asegúrese de que la base de datos está en funcionamiento. 2- No te olvides de crear el usuario db para tener credenciales de acceso.
Deseo que te ayude!
Aquí debemos saber que el nombre de usuario y la contraseña de mLab no son el nombre de usuario y la contraseña de Nuestra base de datos también ... hay que verificar si hemos utilizado el nombre de usuario y la contraseña correctos para la conexión.
Podemos crear una cuenta de usuario de base de datos aquí ---- >>
Mi conexión constará de la siguiente manera
const db ="mongodb://<My database username>:<my database password>.mlab.com:39648/videoplayer"
Asegúrese de que está utilizando el nombre de usuario y contraseña de db adecuados
Si está intentando conectarse a db a través de su código y su nombre de usuario y contraseña tienen caracteres especiales como ''@'', ''$'', etc., asegúrese de codificar su URI con la función encodeURIComponent ()
ejemplo: "localhost: // pooja:" + encodeURIComponent (''pooja @ 123'') + "/ trymynewdb" , luego use el uri enocded para conectarse a db.
Asegúrese de utilizar el username
y la password
la base de datos, no el username
y la password
de la cuenta de Mlab.
En MLab, anteriormente MongoLab, haga lo siguiente
- Navegar a
Users
-
Add Database User
- Elige tu nombre de usuario y contraseña
Ahora puede probar esto en el shell con mongo ds061374.mlab.com:61374/yourdb -u <dbuser> -p <dbpassword>
Mongolab actualizó sus bases de datos 2.6.x a 3.0.x. Desafortunadamente, mongo3 tiene un mecanismo de autenticación diferente, por lo que los clientes antiguos no son compatibles.
Mongoose está utilizando el controlador nativo de Mongo, por lo que debe actualizarlo. Esto generalmente se hace actualizando su instalación local de mongo.
Para aquellos que usan mongojs, actualice a la última versión y agregue el authMechanism:''ScramSHA1''
en el objeto de opciones en la conexión:
db = mongojs(''mongodb://username:[email protected]:32132/mydb'', ["mycollection"], {authMechanism: ''ScramSHA1''});
Para mí la solución fue:
$ npm install --save --save-exact [email protected]
Según: la aplicación Heroku se bloquea después de que MongoDB se haya actualizado a 3.0
Recibí este error mientras utilizaba una versión anterior de mongoose (versión 3.8.10). Después de actualizar a la última versión (versión 5.0.10), el error desapareció y se realizó una conexión.
Simplemente ejecute npm install [email protected] --save .... Pero reemplace la versión con la versión más reciente,
Si su contraseña tiene caracteres especiales, sería mejor verificar el valor de codificación url del carácter especial presente aquí: lista de codificación url
Pero le sugiero que verifique que sus datos se envíen antes de intentar conectarse. Una forma de verificarlo es a través de console.log los datos que se envían. Ejemplo:
console.log(process.env.MONGO_ATLAS_PW);
simplemente agregue? authSource = yourDB & w = 1 al final de la URL de la base de datos
mongoose.connect (''mongodb: // usuario: contraseña @ host / yourDB? authSource = yourDB & w = 1'') este trabajo para mí. & w = 1 es importante
p.ej
MONGO_URI = ''mongodb: // kahn: [email protected]: 13402 / ecommerce? AuthSource = ecommerce & w = 1'';
https://github.com/Automattic/mongoose/issues/4587
Esto me salvó la vida