Получение 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 ответов:
- запустите netstat-a на сервере mongo и проверьте порт.
- проверьте настройки DNS и убедитесь, что сервер linux разрешает внешние подключения.
- проверьте, что 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
по очевидным причинам безопасности. Вы можете:
- добавьте нужный IP, объединив список значений, разделенных запятыми, чтобы привязать MongoDB к нескольким IP-адресам.
- удалить или прокомментировать (с
#
символ) thebind_ip
линия. Но имейте в виду, что все удаленное соединение сможет подключить ваш сервер MongoDB!подробнее о
bind_ip
вариант конфигурации: https://docs.mongodb.com/manual/reference/configuration-options/#net.bindIpBind 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 по умолчанию).
важно: обратите внимание, что с этой конфигурацией любой может иметь доступ к вашей база данных