Mongodb не может подключиться к localhost, но может подключиться к IP-адресу localhost

Если я попытаюсь запустить оболочку mongodb с mongo одна команда, я получаю:

Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84

исключение: не удалось подключиться

Однако, если я укажу локальный IP-адрес локального хоста следующим образом:

mongo 10.10.5.90

... это нормально подключается.

Какие-либо подсказки??

7 ответов

Решение

У вас есть bind_ip установить в вашем mongodb.conf (или сценарии запуска)? отредактируйте для ясности A bind_ip настройка ограничивает IP-адрес, который будет прослушиваться только на этом IP-адресе.

См. Раздел "Привязка IP-адресов": http://www.mongodb.org/display/DOCS/Security+and+Authentication

Если нет, есть ли у вас правила брандмауэра, блокирующие доступ к локальному хосту? Это было бы странно, но я не могу придумать еще одну причину, по которой это не сработало бы, пока работал бы IP-адрес локальной сети.

Эта ошибка может также появиться, если mongodb не был корректно выключен. Если вы печатаете sudo start mongodb и если он дает новый идентификатор процесса при каждом выполнении, то ваш mongodb не был корректно завершен. Чтобы решить этот тип

sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo start mongodb

Просто выполните все эти шаги, чтобы решить эту проблему

Step 1: Remove lock file.
sudo rm /var/lib/mongodb/mongod.lock

Step 2: Repair mongodb.
mongod --repair 

Step 3: start mongodb.
sudo start mongodb 
or
sudo service mongodb start

Step 4: Check status of mongodb.
sudo status mongodb 
or   
sudo service mongodb status

Step 5: Start mongo console.
mongo

Я предпочитаю конфигурацию

      net:
  bindIpAll: true

или

      net:
  bindIp: localhost

Верхняя конфигурация разрешает подключения с удаленных компьютеров (если не заблокирована брандмауэром), вторая разрешает только подключения с вашего локального компьютера.

На мой взгляд, конфигурация типа

      net:
  bindIp: 10.10.5.90

имеет смысл только на компьютере с несколькими сетевыми интерфейсами.

Заметьте, пока мы в 2023 году, имеет смысл добавить

      net:
  ipv6: true

илиmongod --ipv6 ...потому что IPv6 по умолчанию отключен, но IPv6 становится все более распространенным.

Я добавил localhost вместе с ip, который у меня был в bind_ip при запуске mongo, и это решило мою проблему, например: bin/mongod --dbpath data --logpath mongo.log --fork --bind_ip localhost,10.100.1.2

Для людей, использующих MongoDB Compass в окнах VMWare:

C:\Program Files\MongoDB\Server\5.0\bin по умолчанию - это каталог сервера Mongo. Вы можете изменить bindIp и порт в mongod.cfg

Также не забудьте проверить, запущена ли служба сервера mongo: win + r> services.msc> Сервер MongoDB (MongoDB)> Щелкните правой кнопкой мыши> Пуск.

Должен сэкономить время, надеюсь, это поможет.

Отредактируйте ваш mongod.conf следующим образом

bindIp: 0.0.0.0, локальный хост

Меня устраивает.

Другие вопросы по тегам