2015-07-21 17 views
11

Tło Informacjanodejs aplikacja - połączenie MongoDB nie powiedzie się z powodu błędu „ECONNREFUSED”

gram dookoła z moim pierwszym nodejs testowej aplikacji, która próbuje połączyć się ze zdalnym MongoDB.

Problem:

Połączenie się niepowodzeniem z następującym komunikatem:

[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 

Oto logika łączenia:

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; 
       } 
     }); 
} 

Co Sprawdziłem do tej pory:

  1. Zrobiłem pewien, że serwer bazy danych za pomocą portu 27017. Oto, co widzę w logach MongoDB kiedy ponownie uruchomić bazy danych:

    [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. Zrobiłem pewien Mam bazę danych nazywane "testem" przez uruchomienie "mongo" ... a następnie przełączenie i wyjście z testowej bazy danych za pomocą komend "use test"/"use admin".

  3. Nie wierzę, że mam włączoną autoryzację. To jest to, co mam w pliku mongo.conf:

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

I żeby to udowodnić, w celu uzyskania do testowej bazy danych na serwerze poprzez linię poleceń, tylko muszę wpisz "mongo", a następnie domyślnie znajduję się w testowej bazie danych. Myślę więc, że mogę bezpiecznie założyć, że nie mam żadnego uwierzytelniania.

  1. wszelki wypadek, ja też sprawdzone netstat numer portu:

    admin @ mongotest: ~ $ sudo netstat -taupen | grep Mongo tcp 0 0 127.0.0.1:27017 0.0.0.0:* SŁUCHAJ 117 6465150 18792mongod
    admin @ mongotest: ~ $

Jestem obecnie czytając instrukcję, aby zobaczyć, czy jest coś innego, co powinno być sprawdzającym. Czytam również różne stackoverflow posty, które są podobne, ale nie znalazłem jeszcze odpowiedzi.

Wszelkie sugestie?

+0

Twój wynik netstat wyraźnie pokazuje, że mongod słucha tylko interfejsu 127.0.0.1. Musisz zmienić swój ciąg połączenia na mongodb: //127.0.0.1: 27017/test. – sabertiger

+0

see my answer: http: // stackoverflow.com/a/37994794/3166417 – itzhar

Odpowiedz

4

Widzę w dziennikach, że Mongo nasłuchuje na 127.0.0.1. To prawdopodobnie Twój problem. Będziesz musiał zmienić ustawienia konfiguracji adresu IP bind-ip, aby umożliwić Mongo słuchanie określonych lub wszystkich adresów IP. Możesz to zrobić tutaj: Cannot connect to mongodb using machine ip

+0

Lub, jak sugeruje jeden z komentarzy, jeśli twoja usługa węzła działa na tym samym komputerze co Mongo, zmień ciąg połączenia na localhost: mongodb: //127.0.0.1: 27017/test – tier1

Powiązane problemy