Получение MongoDB в Linux для прослушивания удаленных подключений
Я успешно установил MongoDB в Windows (на локальном компьютере) в качестве службы, но теперь я хочу переместить MongoDb на отдельный сервер. Поэтому я извлек tarball на виртуальный сервер в сети (работает linux).
Когда я подключился к серверу ( "testmongoserver" ) с помощью PuTTY с моей локальной машины, я запустил сервер mongod, и он сказал мне, что он прослушивает порт 28017 по умолчанию. Консоль mongo также работает и позволяет мне создавать новую базу данных (testdb) и добавлять к ней пользователей.
Однако я не мог получить доступ к серверу с удаленного сервера. Когда я набираю "testmongoserver: 28017", он не открывает консоль HTTP как "localhost: 28017" на моей локальной машине. Я также не могу подключиться с использованием официальных драйверов и предоставить строку соединения.
Каковы шаги neccesarry для установки MongoDB в Linux, чтобы я мог получить доступ к нему с удаленной машины с помощью соединительной строки и использовать ее консоль HTTP через testmongoserver: 28017
Спасибо!
Ответы
Ответ 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. Брандмауэр
Убедитесь, что вы не работаете за брандмауэром
Ответ 3
Убедитесь, что в файле /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
Ответ 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