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:
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**
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".
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.
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?
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
see my answer: http: // stackoverflow.com/a/37994794/3166417 – itzhar