wake-up-neo.com

nodejs-Anwendung - Mongodb-Verbindung schlägt mit Fehler "ECONNREFUSED" fehl

Hintergrundinformation

Ich spiele mit meiner ersten nodejs-Test-App herum, die versucht, eine Verbindung zu einem Remote-Mongodb herzustellen. 

Problem:  

Die Verbindung schlägt mit der folgenden Meldung fehl: 

[email protected]:~/Documents/nodejs_tests$ Sudo nodejs index.js
Server has started.
Request for / received
About to route a request for: /
inside db connect method
Request for /favicon.ico received
About to route a request for: /favicon.ico
inside db connect method
MongoError: connect ECONNREFUSED
null
MongoError: connect ECONNREFUSED
null

Hier ist die Logik zum Verbinden: 

function connect_nimble() {
        console.log("inside db connect method");
        MongoClient.connect("mongodb://10.1.1.1:27017/test", function(err,db) {
                console.log(err);
                console.log(db);
                if(!err) {
                        console.log("booya!  Connected to mongo");
                        return true;
                }
        });
}

Was ich bisher geprüft habe:  

  1. Ich habe sichergestellt, dass der Datenbankserver den Port 27017 verwendet. Folgendes sehe ich in den Mongodb-Protokollen, wenn ich die Datenbank neu starte: 

    [email protected]:~$ tail -f /var/log/mongodb/mongod.log 
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] 
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] db version v3.0.4
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] git version: 0481c958daeb2969800511e7475dc66986fa9ed5
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] build info:  Linux ip-10-45-73-23 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] allocator: tcmalloc
    2015-07-21T09:52:41.452-0500 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/var/lib/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
    **2015-07-21T09:52:41.470-0500 I NETWORK  [initandlisten] waiting for connections on port 27017**
    
  2. Ich habe sichergestellt, dass ich eine Datenbank mit dem Namen "test" habe, indem Sie "mongo" starten ... und dann mit den Befehlen "use test"/"use admin" in die Testdatenbank wechseln. 

  3. Ich glaube nicht, dass ich die Autorisierung eingeschaltet habe. Folgendes habe ich in der Datei mongo.conf: 

# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

Und um es zu beweisen, um in die Testdatenbank auf dem Server über die Befehlszeile zu gelangen, muss ich nur "mongo" eingeben und dann standardmäßig in der Testdatenbank. Ich denke, ich kann sicher davon ausgehen, dass keine Authentifizierung läuft. 

  1. Für den Fall habe ich auch netstat auf die Portnummer überprüft: 

    admin @ mongotest: ~ $ Sudo netstat -taupen | grep mongo tcp 0 0 127.0.0.1:27017 0.0.0.0:* HÖREN 117 6465150 18792mongod
    admin @ mongotest: ~ $ 

Ich lese gerade im Handbuch, um zu sehen, ob es noch etwas gibt, das ich überprüfen sollte. Ich lese auch durch die verschiedenen stackoverflow-Posts, die ähnlich sind, aber ich habe noch keine Antwort gefunden. 

Irgendwelche Vorschläge? 

11
dot

In Ihren Protokollen kann ich sehen, dass Mongo 127.0.0.1 hört. Das ist wahrscheinlich dein Problem. Sie müssen die Konfigurationseinstellung für die Bind-IP-Adresse ändern, damit Mongo bestimmte oder alle IP-Adressen abhören kann. Wie das geht, erfahren Sie hier: Verbindung mit Mongodb kann nicht über Computer-IP hergestellt werden

5
tier1

Öffnen Sie ein Terminal.

Geben Sie mongod & ein und überprüfen Sie die Stacktrace.

Dies ist ein Beispiel für einen fehlgeschlagenen Start 

I STORAGE [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating I NETWORK [initandlisten] shutdown: going to close listening sockets... I NETWORK [initandlisten] shutdown: going to flush diaglog... I CONTROL [initandlisten] now exiting

Um dies zu beheben, erstellen Sie den Ordner/data/db

Geben Sie im Terminal mkdir /data/db ein.

Tippen Sie erneutmongod

Es klappt !! 

[initandlisten] ** WARNING: Access control is not enabled for the database. I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. I CONTROL [initandlisten] I CONTROL [initandlisten] I CONTROL [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

0
Garytech