2012-02-05 49 views
20

Właśnie zainstalowano MongoDB (standard Ubuntu budować, nie najnowsza stabilna) iz jakiegoś powodu nie mogę połączyć:Nie można połączyć się MongoDB

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

Teraz moja maszyna nie jest 127.xx 1 to z jakiegoś powodu XXX2 (ale ja zmieniłem config do wiązania się z tego adresu, a także starał się wiązać do mojego publicznego adresu IP, który dostarczył bezskutecznie

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 

Sprawdziłem dzienniki i wyświetlają się tylko informacje o uruchomieniu.

Sprawdziłem również, czy demon jest uruchomiony, i jest - próbowałem nawet uruchomić go ręcznie z --fork.

Czy ktoś już kiedyś to widział? Lub jakieś sugestie?

Thx

UPDATE:

Po restarcie - oto logi:

** 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

Powinienem dodać, że ja nie spróbować Mongo 199.21.114.XX: XXXX –

+0

Update - Używaj Döcker i Docker-Compose. –

Odpowiedz

14

należy podać IP (199.21.114.XX), uruchamiając mongo 199.21.114.XX.

W przeciwnym razie, jeśli chcesz, aby nasłuchiwał również na lokalnym hoście, usuń ustawienie bind_ip w pliku konfiguracyjnym.

Aktualizacja Sprawdź konfigurację zapory. Ponieważ łączysz się z zewnętrznym adresem IP, można go skonfigurować tak, aby blokował, nawet z lokalnego komputera.

+2

Dodano aktualizację, aby sprawdzić konfigurację zapory, ponieważ mówisz, że próbowałeś już podać adres IP w wierszu poleceń. –

+0

W tej chwili nie ma tam konfiguracji firewalla, ponieważ jest to pusty serwer. –

+1

Czy jesteś pewien? Jeśli 'netstat -a' pokazuje, że słuchasz na 27017, ale nie możesz połączyć się z 27017 (przez mongo lub telnet), prawdopodobnie jest to zapora ogniowa. 'sudo iptables -L -n', aby sprawdzić reguły. –

2

Domyślnie uruchamianie polecenia konsoli mongo spowoduje wyszukanie mongody na twoim hoście lokalnym, stąd adres IP 127.0.0.1, który jest twoją lokalną pętlą zwrotną. Ponadto domyślna konfiguracja dla mongod powinna być dostępna na localhost. Lepiej zrobić to w ten sposób, aby rozpocząć teraz, chyba że masz włączony auth. Upewnij się, że masz włączone uwierzytelnianie lub twoja baza danych działa otwarcie w twoim publicznym IP.

Jeśli chcesz połączyć się z hostem innym niż localhost lub domyślnej konfiguracji, robisz:

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

Uratowałeś mi życie! Wielkie dzięki! –

+2

ditto - ok może nie moje życie, ale zdecydowanie godzina mojego czasu :) – Pyrce

+1

To działało dla mnie. Musiał później ponownie uruchomić mongodę. sudo service mongodb restart. – csmithmaui

24

I rozwiązać ten problem przez zakomentowanie następującą linię w moim pliku /etc/mongod.conf.

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

Będziesz musiał wykonać tę zmianę konfiguracji przy ponownym uruchomieniu procesu mongod.

sudo service mongod restart 
+0

Próbowałem niektórych innych odpowiedzi tutaj, zanim ten pracował dla mnie. Czy jest jakaś szansa, że ​​w przyszłości będę mieć negatywne konsekwencje z usuwania mongod.lock lub zezwalania na wejście i wyjście na porcie 27017 w moich tablicach IP? – user137717

+0

Doskonały! To działa! – Roman

+0

Komentując '#bind_ip = 127.0.0.1' otworzy się on dla każdego/dowolnego miejsca. Upewnij się, że masz zaporę ogniową/iptables filtrującą niechciane połączenia i/lub dodajesz 'security: authorization: 'enabled''pl do'/etc/mongod.conf'. Inaczej, każdy/gdziekolwiek może pisać do twojego DB. – rafahoro

1

poniższe kroki mogą pomóc:

  1. otwarty zacisk i run "sudo rm/var/lib/MongoDB/mongod.zablokować "
  2. teraz uruchomić" sudo mongod --repair "
  3. teraz" sudo rozpocząć MongoDB "
  4. teraz tylko sprawdzić status statusu MongoDB" Stan sudo MongoDB "

5 na końcu wystarczy wywołać polecenie" mongo "

+0

To "sudo status mongod" –

3

Miałem ten sam problem tylko dlatego, że ten głupi błąd.

najpierw usunąć plik MongoDB co jest w porządku

rm -rf /tmp/mongodb-27017.sock 

gdzie zrobiłem błąd wewnątrz /etc/mongod.conf

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

zamiast

net: 
    port: 27017 
    bindIp: 10.1.2.4 

do słuchania wszystkich dostępny ips

bindIp: [127.0.0.1,10.128.0.2] 

Zrestartuj MongoDB

sudo service mongod start 

nadzieją ta odpowiedź pomoc dla kogoś

+0

Myślę, że miałeś na myśli '' 'sudo service mongodb start''''. również nie działało dla mnie za pomocą nawiasów lub spacji po przecinkach. więc moja była taka: '' 'bind_ip: 127.0.0.1,192.168.222.222''' –

Powiązane problemy