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-адресам.