Получение MongoDB на Linux для прослушивания удаленных подключений


Я успешно установил MongoDB на Windows (на локальной машине) в качестве службы, но теперь я хочу переместить MongoDb на отдельный сервер. Поэтому я извлек tarball на виртуальный сервер в сети (под управлением linux).

когда я подключился к серверу ("testmongoserver") с помощью PuTTY с моей локальной машины, я запустил сервер mongod, и он сказал мне, что он слушает порт по умолчанию 28017. Консоль mongo также работает и позволила мне создать новую базу данных (testdb) и добавить пользователей к нему.

однако, я не мог получить доступ к серверу с удаленного. Когда я набираю testmongoserver:28017 Он не открывает консоль HTTP как localhost:28017 на моей локальной машине нет. Я также не могу подключиться с помощью официальных драйверов и предоставления connectionstring.

каковы шаги neccesarry для установки MongoDB на Linux, чтобы я мог получить доступ к нему с удаленной машины с помощью connectionstring и использовать его http-консоль через testmongoserver:28017

спасибо!

5 52

5 ответов:

  1. запустите netstat-a на сервере mongo и проверьте порт.
  2. проверьте настройки DNS и убедитесь, что сервер linux разрешает внешние подключения.
  3. проверьте, что mongodb может принимать внешнее / удаленное соединение.

ПОРТ По умолчанию для mongo-27017. 28017-порт для webstats.

см http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-Ports

1. Возможность привязать IP

Bind IP-это опция MongoDB, которая ограничивает соединения с конкретными IP-адресами.

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

  1. добавьте нужный IP, объединив список значений, разделенных запятыми, чтобы привязать MongoDB к нескольким IP-адресам.
  2. удалить или прокомментировать (с # символ) the bind_ip линия. Но имейте в виду, что все удаленное соединение сможет подключить ваш сервер MongoDB!

подробнее о bind_ip вариант конфигурации: https://docs.mongodb.com/manual/reference/configuration-options/#net.bindIp

Bind IP также может быть установлен в качестве аргумента команды:http://docs.mongodb.org/manual/reference/program/mongod/#cmdoption--bind_ip

2. Брандмауэр

убедитесь, что вы не бежите за a брандмауэр

убедитесь в вашем /etc/mongodb.файл conf следующие строки

bind_ip = 0.0.0.0

http://jitu-blog.blogspot.com.br/2013/06/allow-mongo-to-connect-from-remote-ip.html

просто была эта проблема, и это исправило ее:

Edit /etc/mongod.conf С sudo nano /etc/mongod.conf убедитесь, что раздел net выглядит следующим образом (привязка localhost по умолчанию не допускает удаленного доступа):

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

обязательно перезагрузите команду mongod, когда вы закончите с выше и С ниже (предполагая, что systemd в дистрибутив Ubuntu 16.04+ и т. д.):

sudo service mongod restart

очевидно, с точки зрения безопасности, если вы собираетесь открыть монго в свою сеть / мир быть в курсе последствия этого (если таковые имеются)

другая проблема может заключаться в том, что порт mongodb не включен. Проверьте, с другого хоста, порты включены на вашем сервере. Для этого вы можете использовать команду:

sudo nmap -P0 your_server_ip

вы можете получить такой ответ:

Host is up (0.052s latency).
Not shown: 997 filtered ports
PORT    STATE  SERVICE
22/tcp  open   ssh
80/tcp  open   http
443/tcp closed https

Если вы используете виртуальный сервер в облаке, как AWS, вам нужно добавить новое правило для добавления порта mongodb (27017 по умолчанию).

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

enter image description here