Получение MongoDB в Linux для прослушивания удаленных подключений - программирование
Подтвердить что ты не робот

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

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

  • Запустите netstat -a на сервере mongo и проверьте порт.
  • Проверьте настройки DNS и убедитесь, что сервер linux поддерживает внешние подключения.
  • Убедитесь, что mongodb может принимать внешние/удаленные подключения.

Порт по умолчанию для mongo - 27017. 28017 - порт для веб-сайтов.

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

Ответ 2

1. Опция привязки IP

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

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

  • Добавьте желаемый IP-адрес, объединив список разделенных запятыми значений, чтобы привязать MongoDB к нескольким IP-адресам.
  • Удалить или прокомментировать (с символом #) строку 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. Брандмауэр

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

Ответ 4

Другая проблема может заключаться в том, что порт 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).

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

введите описание изображения здесь

Ответ 5

Только что эта проблема и это исправлено:

Измените /etc/mongod.conf на sudo nano /etc/mongod.conf убедитесь, что секция сети выглядит ниже (привязка к локальному хосту по умолчанию не позволяет удаленный доступ):

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

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

sudo service mongod restart