Не удалось подключиться к серверу 127.0.0.1:27017


160

Я получаю следующую ошибку:

alex@alex-K43U:/$ mongo
MongoDB shell version: 2.2.0
connecting to: test
Thu Oct 11 11:46:53 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
alex@alex-K43U:/$ 

Вот что происходит, когда я пытаюсь запустить mongodb:

* Starting database mongodb                                             [fail]

Я уже пробовала mongo --repair

Я сделал chown и chmod для var, lib и data / db и log mongodb.

Не уверен, что еще делать. Какие-либо предложения?

mongodb.log:

***** SERVER RESTARTED *****


Thu Oct 11 08:29:40 
Thu Oct 11 08:29:40 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Thu Oct 11 08:29:40 
Thu Oct 11 08:29:41 [initandlisten] MongoDB starting : pid=1052 port=27017 dbpath=/var/lib/mongodb 32-bit host=alex-K43U
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Oct 11 08:29:41 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Oct 11 08:29:41 [initandlisten] **       with --journal, the limit is lower
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] db version v2.2.0, pdfile version 4.5
Thu Oct 11 08:29:41 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207
Thu Oct 11 08:29:41 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Thu Oct 11 08:29:41 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb", logappend: "true", logpath: "/var/log/mongodb/mongodb.log" }
Thu Oct 11 08:29:41 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/var/lib/mongodb/journal"
************** 
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
Thu Oct 11 08:29:41 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
Thu Oct 11 08:29:41 dbexit: 
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close listening sockets...
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to flush diaglog...
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close sockets...
Thu Oct 11 08:29:41 [initandlisten] shutdown: waiting for fs preallocator...
Thu Oct 11 08:29:41 [initandlisten] shutdown: closing all files...
Thu Oct 11 08:29:41 [initandlisten] closeAllFiles() finished
Thu Oct 11 08:29:41 dbexit: really exiting now

РЕДАКТИРОВАТЬ:

Я снял блокировку, затем сделал ремонт Mongod и получил эту ошибку:

Thu Oct 11 12:05:37 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

поэтому я сделал это с помощью sudo:

alex@alex-K43U:~$ sudo mongod --repair
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 [initandlisten] MongoDB starting : pid=5129 port=27017 dbpath=/data/db/ 32-bit host=alex-K43U
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Oct 11 12:05:42 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Oct 11 12:05:42 [initandlisten] **       with --journal, the limit is lower
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] db version v2.2.0, pdfile version 4.5
Thu Oct 11 12:05:42 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207
Thu Oct 11 12:05:42 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Thu Oct 11 12:05:42 [initandlisten] options: { repair: true }
Thu Oct 11 12:05:42 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/data/db/journal"
Thu Oct 11 12:05:42 [initandlisten] finished checking dbs
Thu Oct 11 12:05:42 dbexit: 
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close listening sockets...
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to flush diaglog...
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close sockets...
Thu Oct 11 12:05:42 [initandlisten] shutdown: waiting for fs preallocator...
Thu Oct 11 12:05:42 [initandlisten] shutdown: closing all files...
Thu Oct 11 12:05:42 [initandlisten] closeAllFiles() finished
Thu Oct 11 12:05:42 [initandlisten] shutdown: removing fs lock...
Thu Oct 11 12:05:42 dbexit: really exiting now

Но все еще с той же проблемой.


1
Я думаю, что эта ссылка поможет вам stackoverflow.com/questions/9647561/… путем изменения пути БД Монго
Med7at

8
sudo service mongod restartработал для меня
Судип Бхандари

Ответы:


32

Журнал указывает, что mongodb завершает работу, поскольку существует старый файл блокировки.

Если вы не работали и не работали с ведением журнала, удалите файл блокировки, запустите восстановление и снова запустите mongodb.

Если вы работаете или работали с включенным ведением журнала, см. Соответствующие документы по базе данных Mongo . Обратите внимание, что они говорят: «Если вы работаете с ведением журнала, вам не следует делать восстановление, чтобы восстановить согласованное состояние». Так что, если вы ведете дневник, ремонт может ухудшить ситуацию.


25
Это плохо, что ремонт может повредить вещи!
UpTheCreek

1
В ситуации с включенным ведением журнала, что делать, если я получаю сообщение об ошибке «Отказано в соединении» очень часто?
Шашанк

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

Step 2: Repair mongodb. 
sudo 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 

1
привет Nanhe Kumnar, что является начальным путем в терминале. Должны ли мы перейти к папке cd / usr / local / opt / mongodb / или к другой, я столкнулся со следующей проблемой Виджайвир-Сингх: ~ Виджайвир $ sudo rm /var/lib/mongodb/mongod.lock rm: / var / lib /mongodb/mongod.lock: Нет такого файла или каталога Виджайвир-Сингх: ~ Виджайвир $
Виджайвир Синг Пантилия

@vvss сначала найдите путь к файлу. использовать это. найти mongod.lock
Наньхэ Кумар

9
В версии 2.4.8 это /data/db/mongod.lockвместо/var/lib/mongodb/mongod.lock
Loolooii

84

Ты бегал mongodперед бегом mongo?

Я следовал инструкциям по установке для mongodb по адресу http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/, и у меня была та же ошибка, что и у вас, только когда я запускался mongoперед тем, как фактически запустить процесс mongo с mongod, Я думал, что установка mongodb также запустит его, но вам нужно запустить его вручную, mongodпрежде чем делать что-либо еще, что требует mongodb.


10
Это была моя проблема. Я удивлен, что в документах «Начало работы с Mongo» это не ясно.
jononomo

Это действительно не имеет смысла с точки зрения пользовательского опыта. mongo.exeдолжен быть тот, который запускает БД.
Моше Кармель

58

Это потому, что процесс mongod не работает, вы должны запустить команды ниже, чтобы запустить процесс mongod:

~$ sudo service mongodb stop

~$ sudo rm /var/lib/mongodb/mongod.lock

~$ sudo mongod --repair --dbpath /var/lib/mongodb

~$ sudo mongod --fork --logpath /var/lib/mongodb/mongodb.log --dbpath /var/lib/mongodb

~$ sudo service mongodb start

Надеюсь, это поможет вам.


2
Задача решена. Спасибо. Я бы добавил команды sudo service mongod stopи sudo service mongodb stopперед первой командой, потому что некоторые люди все еще могут их запускать.
Георги Георгиев

1
Это помогло мне перезапустить монго. однако я больше не могу получить доступ к старой базе данных. Не могли бы вы помочь мне здесь.
Эхсан

13

Пытаться

sudo service mongodb start

Это решило мою проблему.


В чем разница между sudo service mongod startиsudo service mongodb start
геккоб

Я не уверен, но думаю, что mongodb - это имя службы, а mongod - имя файла программы.
潘博韜

7

Проверьте свободное место в файловой системе и увеличьте его, если его меньше. Это также может привести к тому, что монго не запустится. Проверьте файл /var/log/mongodb/mongodb.log.

ERROR: Insufficient free space for journal files
Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles

Это случилось со мной, и я добавил smallfiles = true в файл /etc/mongod.conf
Карлос

7

Попробуйте запустить mongodраньше mongo.

sudo /usr/sbin/mongod в моем открытом использовании

Это решило мою проблему,


6

поэтому сначала вы должны удалить файл mongod.lock с помощью команды ниже

sudo rm /var/lib/mongodb/mongod.lock

и затем перезапустите сервис Монго, введя команду ниже

sudo service mongod restart 

4

Вы можете проверить с помощью, netstat -anp | grep 27017чтобы увидеть, используется ли порт другим процессом.


странно, я получил это: alex @ alex-K43U: ~ $ netstat -anp | grep 27017 (Не все процессы могут быть идентифицированы, информация о не принадлежащих процессах не будет показана, вам нужно быть пользователем root, чтобы увидеть все это.)
alexchenco

2
Это нормальный результат при выполнении от имени пользователя без полномочий root, поскольку netstat будет показывать только процессы, которые разрешено видеть вашему пользователю.
Эфрен

Вы можете использовать sudo netstat -anp | grep 27017, чтобы обойти это предупреждение
Wiston Coronell

Это работает для меня, большое спасибо. Я получаю это, когда запускаю указанный код unix 2 [] STREAM 31095 - /tmp/mongodb-27017.sock и удаляю файл .sock, теперь все в порядке.
Авель

4

В Windows запустите cmd от имени администратора:

  1. Создать каталог:

    mkdir c: \ mongo \ data \ db

  2. Установите сервис:

    mongod.exe --install --logpath c: \ mongo \ logs --logappend --bind_ip 127.0.0.1 --dbpath c: \ mongo \ data \ db --directoryperdb

  3. Запустите MongoDB:

    чистый старт MongoDB

4. Запустите оболочку Монго:

c:\mongo\bin\mongo.exe

Это решение отлично работает для меня



3

Для дальнейшего использования выполните следующие действия, чтобы избежать подобных ошибок:

1. Загрузите MondoDB https://www.mongodb.com/

2. Откройте терминал и перейдите в папку загрузок или в любую папку, в которую вы сохранили загрузку mondodb (убедитесь, что вы распаковали папку mongodb перед тем, как перейти в нее)

cd Downloads

3. Переместите mongodb на ваш usr / локальный путь

sudo mv mongodb-osx-... /usr/local/mongodb

4.cd в вашу локальную папку

cd /usr/local/mongodb

5. создать новый каталог

sudo mkdir -p /data/db

6.cd в новый каталог, созданный выше

cd /data/db

7. дай монго разрешения

sudo chown YourMacUserName /data/db

8. Затем перейдите / откройте свой .bash_profile

Для этого выполните следующие действия:

В вашем новом терминале

1 . cd 2 .pwd 3 .ls -l

Проверьте, присутствует ли файл .bash_profile в вашем списке файлов на вашем терминале.

если нет, создайте -bash_profile

Создание .bash_profile:

В вашем терминале

коснитесь .bash_profile

// пропустить этот шаг, если у вас уже есть .bash_profile

Step8:

Далее в вашем терминале:

open .bash_profile

И в открывшемся bash-файле добавьте следующее:

MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin

А потом сохранить . (Файл Сохранить или команда S / CMD + S)

Шаг 9: вернитесь в свой терминал :

source .bash_profile

Теперь откройте два терминала. Один будет для вашего демона mondo, другой - для вашего монго .

Терминал 1: в вашем терминале тип: mongod

mongodb

Вывод: Монгод Терминал

Терминал 2:

mongo

Вывод: Монго терминал

Также убедитесь, что вы не допустили следующую ошибку при запуске mongod в терминале: это неверно

mongo d

выдает следующую ошибку : Не удалось подключиться к 127.0.0.1:27017, в (проверка сокета на наличие ошибок после опроса), причина: соединение отказано

Это верно:

mongod

(Между словами mongo и d .. mondod не должно быть пробела.

Наконец, всегда имейте в виду, что вы должны запустить mondod, прежде чем запускать Монго на своих терминалах .


2

Я следовал за документом на http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ .

После настройки и перезагрузки я выполнил sudo service mongod startи получил ... [FAILED].

Наконец я обнаружил, что mongodэто началось. Я думаю, что yum installдобавил это для автоматического запуска.

Чтобы проверить, работает ли ваш mongod:service mongod status .

Надеюсь, что это может помочь кому-то есть такая же проблема.


2

После частой попытки, наконец, я решил проблему ...

Step 1: ps aux | grep mongo
Step 2: sudo rm /var/lib/mongodb/mongod.lock
Step 3: sudo mongod --repair
Step 4: mongo

2

Эта ошибка может быть вызвана настройкой привязки IP MongoDB. Вы можете проверить конфигурационный файл MongoDB:

$ sudo vi /etc/mongodb.conf

В моем случае для IP-адреса привязки задан адрес внутренней сети сервера, как показано ниже:

bind_ip = 10.10.1.14 
#port = 27017

Поэтому я дал Монго параметр IP для подключения к оболочке по типу:

$ mongo 10.10.1.14

Не забудьте перезапустить службу mongodb, если вы изменили конфигурацию.


2

У меня есть версия Mongo 3.2.1, и мне пришлось удалить файл блокировки /data/db/и после этого, запустился, mongodи он успешно запустился.

>rm /data/db/mongod.lock
>mongod


1

После удаления mongod.lock, который находился в каталоге данных в моей ОС Windows, он все еще отображал то же сообщение об ошибке. Мне пришлось запустить mongod с --dbpath, чтобы команда mongo работала без ошибок.


1

Хотя ответы получены, я хотел бы обсудить ошибки сети в MongoDB.

Сетевые ошибки MongoDB

Установка правил безопасной записи не является полным методом доказательства того, что мы в безопасности. Давайте предположим, что w=1& j=trueустановлены, что если подтверждение записи не получено с сервера? Ну, скорее всего, этого не произошло, но это могло произойти. Причина, по которой это могло произойти, состоит в том, что существуют сетевые ошибки - есть причины, по которым мы можем не получить утвердительный ответ. Итак, мы можем отправить запрос из приложения через драйвер выбранного языка. mongodможет завершить его успешно, а затем может произойти сброс TCP, и сеть фактически может быть сброшена таким образом, что мы никогда не получим ответ. Таким образом, мы можем получить ошибку, и в случае ошибки мы можем предположить, что получили ошибку. Этого не произошло, но это может случиться.

Для вставки, можно защититься от этого. Это возможно, потому что если мы позволим драйверу создать _idи мы сделаем вставку - тогда мы могли бы сделать эту вставку несколько раз, и это было бы вредно. Потому что, если мы делаем это 1- й раз, и мы получаем ошибку, и мы не уверены, завершена ли эта вставка, потому что это сетевая ошибка, то мы могли бы просто сделать это снова. И при условии, что мы выполним это снова, Тир, чтобы выполнить это с точным_id . В худшем случае мы получим ошибку дублированного ключа при попытке вставить его.

Тем не менее, обновление там, где возникает проблема. В частности, обновление, которое не является мощным, например, включает $inkкоманду. Итак, мы говорим базе данных увеличивать определенное поле. Хорошо в этом случае, если мы получаем сетевую ошибку и не знаем, произошло ли обновление. Теперь, может быть, мы знаем достаточно о значениях, которые мы можем проверить с ними, чтобы произошло обновление, и это нормально. Но если мы не знаем начальное значение в базе данных для этого поля, тогда мы не сможем узнать, произошло оно или нет в случае сетевой ошибки. Подобные проблемы встречаются крайне редко при хорошей сети.

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

Причины, по которым приложение может получить ошибку обратно, даже если запись прошла успешно:

  • Сетевое TCP-соединение между приложением и сервером было сброшено после того, как сервер получил запись, но перед отправкой ответа.
  • MongoDBСервер прекращает между получением записи и ответа на него.
  • В сети происходит сбой между временем записи и временем, когда клиент получает ответ на запись.

1

Это работает для меня, чтобы остановить использование mongodb:

use admin
db.shutdownServer()

И перезапустить:

sudo service mongod restart


0

Помогло добавление бина в PATH в переменных среды.

GOTO Installation Path и скопируйте ../bin в переменные PATH в переменных среды в Windows


0

тип windows + r и введите следующее

services.msc

начать MongoDB

Теперь введите «mongo» в cmd в соответствующем пути, где присутствует mongo.exe, он начнет работать.


0

1. Создайте новую папку на диске D: / data / db

2. Откройте терминал на D: / data / db

3.Введите mongod и введите.

4.Введите Монго и введите.

и ваш mongodb стратировал ............




0

Я получил похожую ошибку, но основная причина была другой. После установки mongodb используется доморощенный. https://docs.mongodb.com/manual/installation/ Я должен запустить службу "mongod" перед тем, как дать команду "mongo" на терминале.



0

Ошибка: не удалось подключиться к серверу 127.0.0.1:27017

Это решение для пользователей WINDOWS, введите код здесь 1. Создайте каталог:

mkdir c:\mongo\data\db
  1. Установите сервис: сначала перейдите в каталог bin в файлах программ MongoDB с помощью cd

mongod.exe --install --logpath

  1. Запустите MongoDB:

    net start MongoDB

4. Запустите оболочку Монго:

`c:\mongo\bin\mongo.exe` or

идти до бен и войти mongo

Примечание: открыть терминал в режиме администратора


0

Ubuntu 18.04LTS: проблема возникает, когда я полностью удалил предыдущую версию и установил 4.2.6

После часа поиска я решил другую проблему

MongoDB не запускается - *** прерывается после сбоя fassert ()

Я был безнадежен о проблеме, не мог соединиться с сервером , потому что все, кажется, хорошо.

Наконец, я решил перезагрузить операционную систему и угадать, что ... БИНГО

sudo mongo // works like a charm
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.