Instalé mongodb 3.4.1 en ubuntu 16.04 y los alojé en digital ocean.
Mi cliente mongo local era mongochef 4.5.2
Al principio, no configuré la autorización para mi aplicación, fue pirateada y me pidieron bitcoins como rescate. Así que traté de configurar la autorización. Sin embargo, encontré un problema con el cableado, una vez establecida la authorization: enable
en /etc/mongo.conf . No se puede conectar la base de datos de forma remota y local con la mongoose
, y se produjo el error de autenticación fallida . Pero se podría conectar con la terminal y el mongoChef.
aquí está mi conexión con la mangosta
global.db=mongoose.connect('mongodb://admin:admin123@ip:27017/nodedb');
y también probé
var options = { user : "admin", pass : “admin123", auth : {authMechanism: 'MONGODB-CR'} } global.db = mongoose.connect('mongodb://@ip:27017/test',options);
y también cambié la ip con localhost y 127.0.0.1 localmente, falló lo mismo.
En caso de que localhost y 127.0.0.1 no lo reconozcan. También establezca la configuración en /etc/hosts con:
127.0.0.1 host local 127.0.0.1 nombre de cómputo
actualizar~:
hay dos usuarios en mi base de datos de administración. Uno es usuario root. Y otro es administrador con contraseña admin123 que autenticó DB nodedb
realmente agotado por este problema, ¿alguien ha encontrado este problema?
No ha especificado el origen de autenticación (la base de datos contra la que se autentica). Entonces, si authSource
es admin
, debe especificarse en las opciones de conexión.
options = { "auth": { "authSource": "admin" }, "user": "apiuser", "pass": "admin123" }; // If host=localhost, port=27017 and database name=nodedb mongoose.connect('mongodb://localhost:27017/nodedb', options);
La autenticación se realiza a nivel de base de datos. En su cadena de conexión, db está nodedb, pero su contraseña está almacenada en la base de datos de administración. Puede conectarse a nodedb ya sea agregando un usuario a esta base de datos o definiendo la base de datos para autenticación con --authenticationDatabase admin. Usted puede leer más aquí. Para obtener más información, consulte el manual http://docs.mongodb.org/manual/reference/privilege-documents/
Acceda a su nodedb desde la terminal (mongosh) y luego muestre a los usuarios. Luego verifique sus roles de usuario. Agregue el rol para readWrite al usuario para la base de datos nodedb si no existe.
use nodedb show users db.grantRolesToUser('admin',[{role:'readWrite', db:'nodedb'}])