2017-01-18 3 views
0

Ich habe die mongodb 3.4.1 auf dem ubuntu 16.04 installiert und auf Digital Ocean gehostet.mongoose kann autorisierte db nicht verbinden

Mein lokaler Mongo Kunde war mongochef 4.5.2

Zuerst habe ich die Berechtigung für meine App nicht eingerichtet, es gehackt und wurde für Bitcoin als Lösegeld gefragt. Also habe ich versucht, die Autorisierung einzurichten. Ist jedoch ein Kabelproblem aufgetreten, einmal die authorization: enable in die /etc/mongo.conf einstellen. Es ist nicht möglich, die Datenbank remote und lokal mit der mongoose zu verbinden, und hat den Fehler auth failed. Aber es könnte mit dem Terminal und dem MongoChef verbunden sein.

hier ist meine Verbindung mit Mungo

global.db=mongoose.connect('mongodb://admin:[email protected]:27017/nodedb');

und ich habe auch versucht,

var options = {
 user : "admin",
 pass : “admin123",
 auth : {authMechanism: 'MONGODB-CR'}
} global.db = mongoose.connect('mongodb://@ip:27017/test',options);

und verändert auch die ip mit localhost und 127.0.0.1 lokal ausgefallen ist, gleich.

Nur für den Fall, dass der localhost und 127.0.0.1 nicht erkannt wurde. Auch stellen Sie die Konfiguration in der Datei/etc/hosts mit:

127.0.0.1 localhost 127.0.0.1 computename

Update ~:

gibt es zwei Benutzer in meiner Admin-DB. Einer ist Root-Benutzer. Und eine andere ist admin mit admin123, die authentifizierte DB nodedb

wirklich von diesem Problem erschöpft ist, hat jemand dieses Problem begegnen ???

Antwort

0

Die Authentifizierung erfolgt auf Datenbankebene. In Ihrer Verbindungszeichenfolge db ist nodedb, aber Ihr Passwort ist in der Admin-Datenbank gespeichert. Sie können eine Verbindung zu nodedb herstellen, indem Sie entweder einen Benutzer zu dieser Datenbank hinzufügen oder indem Sie db für auth mit --authenticationDatabase admin definieren. Sie können hier mehr lesen. Weitere Informationen finden Sie im Handbuch http://docs.mongodb.org/manual/reference/privilege-documents/

+0

danke Neuling. Ich habe bereits einen Benutzer zum nodedb hinzugefügt, der admin: admin123 ist. Obwohl dieser Benutzer dem nodedb authentifiziert ist. Aber es ist tatsächlich in der Admin-DB gespeichert. Sind alle Benutzer in mongodb erforderlich, um in Admin zu speichern? – Suwen

0

Sie haben die authSource (die Datenbank, für die sie authentifiziert wird) nicht angegeben. Also, wenn die authSource ist admin sollte es in den Verbindungsoptionen angegeben werden.

options = { 
    "auth": { 
     "authSource": "admin" 
    }, 
    "user": "apiuser", 
    "pass": "admin123" 
}; 

// If host=localhost, port=27017 and database name=nodedb 
mongoose.connect('mongodb://localhost:27017/nodedb', options); 
+0

Danke Santanu. Ich habe deine Lösung versucht, aber das Problem ist dasselbe. Bitte beachten Sie die oben genannten zusätzlichen Updates für die Benutzer. – Suwen