2012-02-05 29 views
20

Ho appena installato MongoDB (standard Ubuntu costruire, non l'ultima stabile) e per qualche motivo non riesco a collegare:Impossibile connettersi a MongoDB

Mon Feb 6 03:11:22 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:79 
exception: connect failed 

Ora la mia macchina non è 127.xx 1 è per qualche motivo xxx2 (ma ho cambiato la mia configurazione di legarsi a tale indirizzo, e anche cercato di legare al mio IP pubblico che ha fornito senza alcun risultato

config:.

# mongodb.conf

# Where to store the data. 

# Note: if you run mongodb as a non-root user (recommended) you may 
# need to create and set permissions for this directory manually, 
# e.g., if the parent directory isn't mutable by the mongodb user. 
dbpath=/var/lib/mongodb 

#where to log 
logpath=/var/log/mongodb/mongodb.log 

logappend=true 

bind_ip = 199.21.114.XX 
port = 27017 

Ho controllato i log e solo le informazioni di avvio sono visualizzate qui.

Ho anche controllato che il Deamon sia in esecuzione, e lo è - ho anche provato a farlo funzionare manualmente con un --fork.

Qualcuno l'ha mai visto prima? O qualche suggerimento?

Thx

UPDATE:

Dopo un riavvio - qui ci sono i registri:

** WARNING: You are running in OpenVZ. This is known to be broken!!! 

Tue Feb 7 19:43:32 [initandlisten] db version v1.8.2, pdfile version 4.5 
Tue Feb 7 19:43:32 [initandlisten] git version: nogitversion 
Tue Feb 7 19:43:32 [initandlisten] build sys info: Linux allspice 2.6.24-28-se$ 
Tue Feb 7 19:43:32 [initandlisten] *** warning: spider monkey build without ut$ 
Tue Feb 7 19:43:32 [initandlisten] waiting for connections on port 27017 
Tue Feb 7 19:43:32 [websvr] web admin interface listening on port 28017 
+0

avrei dovuto aggiungere che ho cercato di mongo 199.21.114.XX: xxxx –

+0

Aggiornamento - Uso Docker Docker e-Compose. –

risposta

14

è necessario specificare l'IP (199.21.114.XX), eseguendo mongo 199.21.114.XX.

In caso contrario, se si desidera ascoltare anche su localhost, è necessario rimuovere l'impostazione bind_ip nel file di configurazione.

Aggiornamento Controllare la configurazione del firewall. Dal momento che ti stai collegando all'IP esterno, può essere configurato per bloccare, anche dalla casella locale.

+2

Aggiunto un aggiornamento per controllare la configurazione del firewall, poiché si dice che si è già provato a specificare l'IP nella riga di comando. –

+0

Al momento non vi è alcuna configurazione del firewall, poiché è un server vuoto. –

+1

Sei sicuro? Se 'netstat -a' sta mostrando che stai ascoltando su 27017, ma non puoi connetterti a 27017 (via mongo o telnet), probabilmente c'è un firewall. 'sudo iptables -L -n' per controllare le regole. –

2

Per impostazione predefinita, il comando della console mongo cercherà mongodb sul proprio host locale, da cui l'IP 127.0.0.1, che è il loopback locale. Inoltre, la configurazione di default per mongod dovrebbe essere disponibile su localhost. È meglio farlo in questo modo per ora, a meno che tu non abbia attivato auth. Assicurati di aver abilitato l'autenticazione o che il tuo database sia aperto sul tuo IP pubblico.

Quando si desidera connettersi a un host diverso da localhost o la vostra configurazione di default, dovete fare:

mongo <host> 
9
sudo rm /var/lib/mongodb/mongod.lock 
+0

Mi hai salvato la vita! Molte grazie! –

+2

idem - ok forse non è la mia vita ma sicuramente un'ora del mio tempo :) – Pyrce

+1

Questo ha funzionato per me. Dovuto riavviare mongod in seguito. riavvio del servizio sudo mongodb. – csmithmaui

24

Ho risolto questo problema commentando la seguente riga nel mio file /etc/mongod.conf.

# Listen to local interface only. Comment out to listen on all interfaces. 
#bind_ip = 127.0.0.1 

È necessario seguire questa modifica di configurazione con il riavvio del processo mongod.

sudo service mongod restart 
+0

Ho provato alcune delle altre risposte qui prima che questo funzionasse per me. C'è qualche possibilità che avrò conseguenze negative in futuro eliminando mongod.lock o permettendo input e output sulla porta 27017 nelle mie tabelle ip? – user137717

+0

Eccellente! Funziona! – Roman

+0

Commentando '#bind_ip = 127.0.0.1' lo apriremo a chiunque/ovunque. Assicurati di avere il tuo firewall/iptables che filtra le connessioni non richieste e/o aggiungi 'security: autorizzazione: 'enabled'' nel tuo/etc/mongod.conf'. Altrimenti, chiunque/ovunque può scrivere sul tuo DB. – rafahoro

1

seguenti operazioni possono aiutare:

  1. terminale aperto e fuggi "sudo rm/var/lib/MongoDB/mongod.bloccare "
  2. ora gestita" sudo mongod --repair "
  3. ora" sudo iniziare mongodb "
  4. ora solo controllare lo stato di stato di MongoDB" sudo stato MongoDB "

5 per ultimo basta richiamare il comando" mongo "

+0

È "sudo status mongod" –

3

Ho avuto lo stesso problema solo perché l'errore stupido.

file di mongodb rimuovere prima che va bene

rm -rf /tmp/mongodb-27017.sock 

dove ho fatto errore all'interno del /etc/mongod.conf

# network interfaces 
net: 
    port: 27017 
#bindIp: 127.0.0.1 
bindIp: privateIp 

invece di

net: 
    port: 27017 
    bindIp: 10.1.2.4 

per ascoltare tutti disponibile ips

bindIp: [127.0.0.1,10.128.0.2] 

riavvio del MongoDB

sudo service mongod start 

si spera questa risposta di aiuto per qualcuno

+0

penso che tu intendessi "sudo service mongodb start'''. inoltre non ha funzionato per me con le parentesi o con gli spazi dopo le virgole. così il mio era così: '' 'bind_ip: 127.0.0.1,192.168.222.222''' –

Problemi correlati