2014-07-23 17 views
60

Ho un server Linode con Ubuntu 12.04 LTS e istanza MongoDB (il servizio è in esecuzione e può connettersi localmente) a cui non riesco a connettermi da un'origine esterna.Connessione rifiutata a MongoDB errno 111

ho aggiunto queste due regole ai miei tavoli IP, dove < indirizzo IP> è il server che voglio connettersi da (come descritto in questo MongoDB reference):

iptables -A INPUT -s < ip-address > -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -d < ip-address > -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

E vedo la regola nella mia tabella IP che consente le connessioni su 27017 da e verso l'indirizzo IP <> tuttavia quando provo a connettermi da, < indirizzo ip> al mio database mongo usando un comando come questo:

mongo databasedomain/databasename -u username -p password

ottengo questo errore:

2014-07-22T23:54:03.093+0000 warning: Failed to connect to databaseserverip:27017, reason: errno:111 Connection refused 2014-07-22T23:54:03.094+0000 Error: couldn't connect to server < ip address >:27017 (databaseserverip), connection attempt failed at src/mongo/shell/mongo.js:148 exception: connect failed

Ogni aiuto è molto apprezzato !!!! Grazie!!!

+0

Sei sicuro che l'altro mongod è in esecuzione? Puoi connetterti a livello locale? – Sammaye

+0

mongod è in esecuzione localmente e sì, posso collegarmi localmente. – dbcooper

risposta

100

Grazie per l'aiuto a tutti!

Si scopre che si è trattato di un conflitto instabile. Due regole che elencano la porta aperta (che ha provocato una porta chiusa).

Tuttavia, uno dei commenti di aka e un altro di manu2013 erano problemi che avrei incontrato, se non fosse stato per il conflitto.

So! Ricordarsi sempre di modificare il file /etc/mongod.conf e impostare il numero bind_ip = 0.0.0.0 per effettuare connessioni esterne.

Inoltre, assicurarsi di non avere regole in conflitto nell'iptable per la porta che mongo desidera (vedere link on mongodb's site per configurare correttamente gli iptables).

+6

ha funzionato e puoi anche commentare il bind_ip –

+1

O semplicemente usa 127.0.0.1 in connectionString, invece di localhost, e connetti internamente ... –

+4

Non dimenticare di fare 'riavviare il servizio sudo mongod ' – mqklin

38

provare quanto segue:

sudo rm /var/lib/mongodb/mongod.lock 
sudo service mongodb restart 
+1

Nessuna fortuna. Sto ancora ottenendo il fallimento della connessione. Grazie per il tentativo. – dbcooper

+1

Il tuo server MongoD è obbligato ad ascoltare su tutte le interfacce? 2.6.x è impostato di default per ascoltare solo su localhost. Puoi confermarlo con "netstat -an | grep 27017" e dovrebbe mostrare a quali indirizzi IP è associato il canale. – aks

+1

Assicurarsi che nel mongodb.conf file di configurazione, l'impostazione del bindIp (bind_ip per le versioni precedenti) è impostato per ascoltare tutte le interfacce assegnando il valore 0.0.0.0. Per impostazione predefinita, ascolta solo su localhost poiché il suo valore predefinito è 127.0.0.1. – manu2013

3

Un altra opzione è quella di riparare solo il database in questo modo (nota: directory db0 dovrebbe essere pre-creato prima):

mongod --dbpath /var/lib/mongodb/ --repairpath /var/lib/mongodb/db0 

Questa è anche un'opzione accettabile in ambienti di produzione ...

30

Questi comandi risolto il problema per me,

sudo rm /var/lib/mongodb/mongod.lock 
sudo mongod --repair 
sudo service mongod start 
sudo service mongod status 

Se sei dietro proxy, l'uso: -
export http_proxy = "http: //username:[email protected]:port/"
export https_proxy = "http: // nomeutente: [email protected]: port /"

Riferimento: https://stackoverflow.com/a/24410282/4359237

+0

Se eseguo questo comando, rimuove i dati che ho memorizzato nel database – devend

+0

@devend Non dovrebbe come comando di riparazione eseguire il comando repairDatabase su tutti i database. repairDatabase: controlla e ripara errori e incongruenze nella memorizzazione dei dati. repairDatabase è analogo a un comando fsck per i file system. [Riferimento] (https://docs.mongodb.com/v3.0/reference/command/repairDatabase/#repairdatabase) – sk1pro99

14

Per Ubuntu Server 15.04 e 16.04 è necessario eseguire solo questo comando

sudo apt-get install --reinstall mongodb 
+0

ha funzionato. Grazie. –

6

non ho avuto una directory /data/db. Ne ho creato uno e ne ho dato uno

1

Ho anche avuto lo stesso problema. Effettua una directory in dbpath. Nel mio caso non c'era una directory in/data/db. Così ne ho creata una. Ora funziona. Assicurati di dare il permesso a quella directory.

Problemi correlati