MongoDB bind_ip не будет работать, если не установлено значение 0.0.0.0

Я действительно пытался, даже переустановил MongoDB.

И это то же самое, что MongoDB bind_ip error: bind() failed errno: 99 Невозможно назначить запрошенный адрес для сокета

Он работает, если установить bind_ip в: 0.0.0.0 или 127.0.0.1

$ sudo service mongod start
mongod start/running, process 30040
$ sudo service mongod restart
mongod stop/waiting
mongod start/running, process 29704
$ mongo --port 19708
MongoDB shell version: 3.0.3
connecting to: 127.0.0.1:19708/test
>

Он не будет работать, если установить bing_ip в: 127.0.0.1,192.118.96.10,42.112.36.110

$ sudo service mongod start
mongod start/running, process 29969
$ sudo service mongod restart
stop: Unknown instance:
mongod start/running, process 29766
$ mongo --port 19708
MongoDB shell version: 3.0.3
connecting to: 127.0.0.1:19708/test
2015-06-17T06:32:34.625+0000 W NETWORK  Failed to connect to 127.0.0.1:19708
reason: errno:111 Connection refused
2015-06-17T06:32:34.627+0000 E QUERY
Error: couldn't connect to server   127.0.0.1:19708 (127.0.0.1), connection attempt failed
at connect (src/mongo/shell/mongo.js:181:14)
at (connect):1:6 at src/mongo/shell/mongo.js:181
exception: connect failed

места:

$ which mongod
/usr/bin/mongod
$ which mongo
/usr/bin/mongo

конфигурации в /etc/mongod.conf

dbpath=/var/lib/mongodb

logpath=/var/log/mongodb/mongod.log

logappend=true

port = 19708

# ips, eg:
# private ip for mongodb server: 192.118.96.10
# public ip for remote app server: 42.112.36.110

bind_ip = 127.0.0.1,192.118.96.10,42.112.36.110

auth = true

Спасибо заранее.

Ответ 1

Изменить: Я не знаю, что я просто ошибся с моим ответом или изменилось поведение bind_ip, но можно привязать к нескольким отдельным IP-адресам

bind_ip:127.0.0.1,10.0.0.1,8.8.8.8

Итак, скорее всего, один из IP-адресов mongod был назначен для привязки к нему не существовало на рассматриваемой машине.


Вы можете привязать mongod только к одному IP-адресу, причем 0.0.0.0 является псевдонимом для "прослушивания всех доступных сетевых интерфейсов".

Итак, используйте

bind_ip=127.0.0.1

чтобы прослушать интерфейс обратной связи цикла или

bind_ip=<someIP>

для прослушивания этого IP только или

bind_ip=0.0.0.0

для прослушивания всех доступных IP-адресов в системе.

Если вам нужно прослушать несколько конкретных IP-адресов, очень вероятно, что ваш дизайн системы каким-то образом завинчивается.

Ответ 2

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

Произошла ошибка в строке и пробеле.

Что я сделал неправильно

# 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]

надеюсь, этот ответ будет полезен для кого-то.

Ответ 3

Mongo 3.6.2 Community

Решение для меня состояло в том, чтобы отредактировать раздел /etc/mongod.conf

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,192.168.1.240   # No brackets, No spaces, only comma separated

#security

Затем сохраните и сделайте это, чтобы перезапустить и проверить службу:

> service mongod restart
> service mongod status

Здесь нет сбоя, теперь убедитесь, что кто-то прослушивает:

> netstat -a |grep :27017

tcp   0   0  yourhostname:27017   0.0.0.0:*     LISTEN
tcp   0   0  localhost:27017      0.0.0.0:*     LISTEN

Теперь подключитесь к вашим любимым инструментам Mongo или командной строке.

Некоторые результаты разного форматирования в файле /etc/mongod.conf

  • запятая и пробел приводят только к привязке первого IP-адреса.
  • разделитель только пространства выводит только первый связанный IP-адрес
  • [] окружают результаты неудачи запуска mongod

Ответ 4

Я часами бил головой о стену с этим вопросом. В конце концов, глядя на журналы и googling, что я нашел, у меня есть где-то (все, что я получил, когда googling "mongo bindIp multipl" (и т.д.) Был загрузкой таких страниц, как этот, с ответами, которые не помогли). Во-первых, блок в /etc/mongod.conf, который работал у меня, был:

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,172.16.1.2

Нет пробелов, кавычек, без скобок... но даже с ним правильный перезапуск mongodb дал ошибку, а затем он отказался запускать. Я потратил несколько часов, пытаясь использовать другие конфигурации, которые были неправильными (что расстраивает, поскольку правильность этой строки на самом деле не решила проблему, и я не знал, что есть другой).

Мне удалось решить эту проблему, удалив файл сокета mongodb:

rm /etc/mongodb-27017.sock 

После этого, запустив

systemctl restart mongod

работал без ошибок. Интересная вещь (часть того, что делало ее очень расстраивающей) заключалась в том, что во время процесса проб и ошибок, если я установил bindIP обратно на 127.0.0.1 и перезапустил mongod, это сработало, что заставило меня подумать, что эта строка в порядке, и проблемы были с альтернативными вводами/синтаксисом, которые я пытался. (Мое лучшее предположение, что что-то в файле сокета ссылается на ips? Я не знаком с этим элементом кодирования.)

После удаления сокета я смог тогда как-то включить оболочку в монго (параметры, необходимые при включенной аутентификации):

mongo -u admin -p password --authenticationDatabase "admin")

который устанавливает, что 127.0.0.1 работает, а также для подключения из моего удаленного приложения (в моем текущем сценарии используется экземпляр тестирования узла nodebb).

Ответ 5

В документации указано

"Вы можете объединить список разделенных запятыми значений, чтобы привязать mongod к нескольким IP-адресам."

Итак, это неправда...

Ответ 6

В моем случае ни один из вышеперечисленных вариантов не сработал. Спецификация, которая наконец-то сработала для меня:

bind_ip= [<IP_one> <IP_two>]

Примером может быть:

bind_ip= [127.0.0.1 10.0.0.4]

(Обратите внимание, что между этими двумя направлениями нет запятой)

У меня MongoDB 2.6.10 на Ubuntu 16.4.5 (LTS)

Ответ 7

Привет, я использую версию оболочки MongoDB: 3.2.6.

bindIP = 127.0.0.1,192.168.0.50 
bindIP = [127.0.0.1,192.168.0.50]
bind_ip = 192.168.6.38 

не работает, я отредактировал файл mongod.conf с помощью этой команды

sudo -i gedit /etc/mongod.conf file 

И изменил bind_ip = 0.0.0.0 на bind_ip = 192.168.6.38, он отлично работает.

Ответ 8

Использование MongoDB 4.0.5: у меня работает следующее:

bindIp=[127.0.0.1,11.22.33.44]

И тогда я включил Auth:

security:
   authorization: "enabled"

Перезапуск mongod (на Ubuntu 18.04) дал ошибку:

Скалярная опция 'net.bindIp' должна иметь одно значение

Поэтому мне пришлось сделать bindIp: 0.0.0.0. Может быть, кто-нибудь знает, как объединить bindIp и Security

Ответ 9

С Ubuntu 18.04.2 LTS и MongoDB версии 4.0.9 решение:

net:
  port: 27017
  bindIp: 127.0.0.1 192.168.0.4 // space-separated values

Как указано на странице инструкций по установке MongoDB, "ВАЖНО: Следующие инструкции предполагают, что вы загрузили официальные пакеты MongoDB mongodb-org, а не неофициальный пакет mongodb, предоставленный Ubuntu".

Первоначально я установил с помощью sudo apt install mongodb, поэтому мне пришлось удалить и переустановить официальную версию, чтобы установить привязку к нескольким IP-адресам.