2012-02-05 5 views
20

Я только что установил MongoDB (стандартный Ubuntu строить, а не последняя стабильная) и по некоторым причинам я не могу подключиться:Невозможно подключиться к MongoDB

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

Теперь моя машина не 127.xx 1 это по каким-то причине XXX2 (Но я изменил конфиг для привязки к этому адресу, а также пытался привязать к моему общественному IP, обеспечивший не безрезультатно

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 

Я проверил журналы, и там отображается только информация о запуске.

Я также проверил, что работает дезамон, и это - я даже попытался запустить его вручную с помощью --fork.

С кем-нибудь сталкивались раньше? Или любые предложения?

Thx

UPDATE:

После перезагрузки - вот журналы:

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

Я должен добавить, что я пытаюсь Монго 199.21.114.XX: хххх –

+0

Update - Используйте Докер и Докер-Compose. –

ответ

14

Вы должны указать IP (199.21.114.XX), запустив mongo 199.21.114.XX.

В противном случае, если вы хотите, чтобы он также прослушивал локальный хост, вы должны удалить настройку bind_ip в конфигурационном файле.

Обновление Проверьте конфигурацию брандмауэра. Поскольку вы подключаетесь к внешнему IP-адресу, его можно настроить для блокировки даже из локального поля.

+2

Добавлено обновление, чтобы проверить конфигурацию вашего брандмауэра, так как вы говорите, что уже пытались указать IP в командной строке. –

+0

На данный момент там нет конфигурации брандмауэра, так как это пустой сервер. –

+1

Вы уверены? Если 'netstat -a' показывает, что вы слушаете 27017, но вы не можете подключиться к 27017 (через mongo или telnet), возможно, есть брандмауэр. 'sudo iptables -L -n', чтобы проверить правила. –

2

По умолчанию команда консоли mongo будет искать mongodb на вашем локальном хосте, следовательно, IP-адрес 127.0.0.1, который является вашим локальным шлейфом. Кроме того, стандартная конфигурация для mongod должна быть доступна на localhost. Лучше сделать это сейчас, чтобы начать, если вы не включили auth. Убедитесь, что вы включили авторизацию или ваша база данных работает открыто на вашем общедоступном ip.

Если вы хотите подключиться к узлу, локальной или вашей конфигурации по умолчанию, вы делаете:

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

Ты спас мне жизнь! Большое спасибо! –

+2

То же самое - хорошо, может быть, не моя жизнь, а определенно час моего времени :) – Pyrce

+1

Это сработало для меня. Пришлось перезапустить mongod впоследствии. sudo service mongodb restart. – csmithmaui

24

Я решил эту проблему, закомментировать следующую строку в моем /etc/mongod.conf файле.

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

Вам необходимо будет следовать этому изменению конфигурации, перезапустив процесс mongod.

sudo service mongod restart 
+0

Я попробовал некоторые другие ответы здесь, прежде чем этот работал для меня. Есть ли вероятность, что в будущем я буду иметь негативные последствия от удаления mongod.lock или разрешения ввода и вывода на порт 27017 в моих IP-таблицах? – user137717

+0

Отлично! Оно работает! – Roman

+0

Комментируя '#bind_ip = 127.0.0.1', он откроется для всех или любого другого. Убедитесь, что у вас есть ваш брандмауэр/iptables, который фильтрует незапрашиваемые соединения и/или добавляет 'security: authorization: 'enabled'' в ваш'/etc/mongod.conf'. Кроме того, любой пользователь может записывать в вашу БД. – rafahoro

1

Следующие шаги могут помочь вам:

  1. открыт терминал и запустить "Судо гт/вар/Библиотека/MongoDB/mongod.Блокировка "
  2. теперь работают" Судо mongod --repair "
  3. сейчас" начать Судо MongoDB "
  4. теперь просто проверить статус статус MongoDB" SUDO статус MongoDB "

5 наконец-то просто вызвать команду" mongo "

+0

Это «sudo status mongod» –

3

У меня была такая же проблема только потому, что глупая ошибка.

первый удалить MongoDB файл, который прекрасно

rm -rf /tmp/mongodb-27017.sock 

, где я сделал ошибку внутри /etc/mongod.conf

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

вместо

net: 
    port: 27017 
    bindIp: 10.1.2.4 

для слушать все доступно ips

bindIp: [127.0.0.1,10.128.0.2] 

Перезапустите MongoDB

sudo service mongod start 

мы надеемся, что этот ответ поможет для кого-то

+0

Я думаю, вы имели в виду '' 'sudo service mongodb start'''. также он не работал для меня с помощью скобок или пробелов после запятых. поэтому мой был таким: '' 'bind_ip: 127.0.0.1,192.168.222.222''' –

Смежные вопросы