Поэтому я установил MongoDB v4.0 на виртуальную машину Ubuntu 18.10, работающую на Google Compute Engine. Установлен успешно, хорошо работает с mongo
оболочка через SSH. Теперь я хотел получить доступ к базе данных удаленно со своего рабочего стола.
Следующий этот руководство, я отредактировал свой /etc/mongod.conf
файл и закомментировал bind_ip
строка в следующем коде:
net:
port: 27017
# bindIp: 127.0.0.1
Перезапустил службу service mongod restart
Также открыл TCP-порт 27017 в брандмауэре Google Cloud Platform.
Однако база данных по-прежнему недоступна любым способом, т.е. mongo
оболочка, установленная на моем локальном компьютере, MongoDB Compass, server_ip:27017
форматировать в Google Chrome, все не подключаются.
Я побежал sudo netstat -tlnp
через SSH на виртуальной машине,
У меня есть только следующая строка для MongoDB:
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 18490/mongod
В 0.0.0.0
Строка, которая должна была быть там, указывающая, что он открыт для всех соединений, все еще отсутствует.
Возможно, это ошибка конфигурации или какой-то внутренний брандмауэр блокирует соединение?
Изменить: я даже убедился, что iptables этого не вызывает. Выдал команды
iptables -A INPUT -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
Все еще не повезло
Решил это. Это действительно проблема конфигурации, а не проблема брандмауэра.
По-видимому, MongoDB больше не работает с bindIp: 0.0.0.0
или комментируя bindIp
целиком.
Что сработало, так это то, что я удалил строку bindIp и заменил ее на
bindIpAll: правда
Итак, окончательный код выглядит так:
сеть:
порт: 27017
bindIpAll: правда
# bindIp: 127.0.0.1
P.S. Если вы делаете это на своем сервере, не забудьте включить аутентификацию MongoDB.
Раскомментируйте строку security:
И добавить authorization: 'enabled'
ниже этого.
безопасность:
авторизация: 'включено'