не удалось подключиться к серверу 127.0.0.1 shell / mongo.js


88

когда я настраиваю mongodb в своем ubuntu, я пытаюсь: ./mongo, он показывает эту ошибку:

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

так что я могу сделать ,

Благодарность


Как ты его установил? Вы использовали способности? Вы скачали тарбал напрямую?
— Брайан Миглиориси

1
У меня была эта ошибка, потому что на ubuntu я не запускал mongodпервым
— Коннор Лич

Ответы:


124
  • Удалите файл блокировки вручную: sudo rm /var/lib/mongodb/mongod.lock
  • Запустите сценарий восстановления: sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Обратите внимание на следующее:

  • Вы должны запустить эту команду как пользователь mongodb. Если вы запустите его как root, тогда root будет владеть файлами в / var / lib / mongodb /, которые необходимы для запуска демона mongodb, и поэтому, когда демон попытается запустить позже как пользователь mongodb, у него не будет разрешений для запуска . В этом случае вы получите следующую ошибку: Невозможно создать / открыть файл блокировки для lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Permission denied, terminating.
  • В Ubuntu вы должны указать файл конфигурации /etc/mongodb.conf, используя флаг -f. В противном случае он будет искать файлы данных в неправильном месте, и вы увидите следующую ошибку: dbpath (/ data / db /) не существует, завершается.

Отличная ссылка. Решил проблему точно.
— jaketrent

1
Ответ сейчас выше.
— fady mohamed osman

2
как запустить это как пользователь mongodb?
— user4951

Просто добавьте себя в группу mongodb: useradd -G mongodb fady замените fady своим именем пользователя.
— fady mohamed osman

2
Мне пришлось использовать как информацию из этого ответа, так и из ответа @boulder_ruby. Это потому, что мой / data / db / отсутствовал. Возможно, это могло бы быть хорошим обновлением, чтобы этот ответ был более полным.
— Фабрицио Бузето 08

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

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


Если я попробую `sudo -u mongodb mongod -f /etc/mongodb.conf --repair`, вот что я получу:Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
— Aleksandrus

21

Пробуем запустить $ mongod

Если вы получаете сообщение об ошибке, например

MongoDB shell version: 2.0.5
connecting to: test
Fri Jun  1 11:20:33 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

hisham-agil:~ hisham$ mongod
mongod --help for help and startup options
Fri Jun  1 11:24:47 [initandlisten] MongoDB starting : pid=53452 port=27017 dbpath=/data/db/ 64-bit host=hisham-agil.local
Fri Jun  1 11:24:47 [initandlisten] db version v2.0.5, pdfile version 4.5
Fri Jun  1 11:24:47 [initandlisten] git version: nogitversion
Fri Jun  1 11:24:47 [initandlisten] build info: Darwin gamma.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Jun  1 11:24:47 [initandlisten] options: {}
Fri Jun  1 11:24:47 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Fri Jun  1 11:24:47 dbexit: 
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close listening sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to flush diaglog...
Fri Jun  1 11:24:47 [initandlisten] shutdown: going to close sockets...
Fri Jun  1 11:24:47 [initandlisten] shutdown: waiting for fs preallocator...
Fri Jun  1 11:24:47 [initandlisten] shutdown: lock for final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: final commit...
Fri Jun  1 11:24:47 [initandlisten] shutdown: closing all files...
Fri Jun  1 11:24:47 [initandlisten] closeAllFiles() finished
Fri Jun  1 11:24:47 dbexit: really exiting now

Затем вы столкнулись с базовой ошибкой запуска, которая довольно распространена.

По умолчанию mongod попытается использовать / data / db для своих файлов базы данных, которых в данном случае не существует.

Ты не можешь начать

mongo 

пока ты не справишься

mongod.

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

** См. Аналогичный вопрос - Получение ошибки «Ошибка: не удалось подключиться к серверу 127.0.0.1 shell / mongo.js» и при попытке запустить mongodb на mac osx lion


вы также можете установить dbpath следующим образом: mongod --dbpath ../data
— cbaigorri

20

На самом деле это не ошибка ... Здесь происходит то, что Mongo полагается на демон для запуска локального сервера базы данных, поэтому для того, чтобы «запустить» сервер mongo в вашей оболочке, вы должны запустить службу mongo первый.

Для Fedora Linux (это тот дистрибутив, который я использую) Вам необходимо выполнить следующие команды:

1 sudo service mongod start
2 mongo

И вот оно! сервер будет работать. Теперь, если вы хотите, чтобы служба Mongo запускалась при загрузке системы, вам нужно запустить:

sudo chkconfig --levels 235 mongod on

И это все! Если вы это сделаете, теперь в оболочке вам просто нужно ввести mongo , чтобы запустить сервер, но это почти все, проблема в том, что вам нужно сначала запустить СЕРВИС, а затем СЕРВЕР :)

PS Команды, которые я опубликовал, могут работать и в других дистрибутивах Linux, а не только в Fedora ... На всякий случай, возможно, вам придется настроить некоторые слова в зависимости от используемого вами дистрибутива;)


То же решение применяется к вопросу: stackoverflow.com/questions/7958228/…
— Jmlevick

Так много раз я был в тупике и долгое время
— Бен автор

2
и для вариантов Debian / Ubuntu: sudo service mongodb start
— ljs.dev,

11

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

ошибка

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

Решение:

Сначала установите mongod, используя:

sudo apt-get install mongodb-server

Затем введите

mongod --dbpath /mongo/db

затем

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

затем

sudo -u mongodb mongod -f /etc/mongodb.conf  --repair

Спасибо


Удалит ли этот метод существующие базы данных в mongo?
— Эван

6

Вам нужно удалить файл блокировки mongod.lockили /var/lib/mongodb/mongod.lockна ubuntu, затем вам нужно сначала запустить mongod.exeили service mongodb startна ubuntu, затем запустить mongo.exeили mongoна ubuntu.


OP находится в Ubuntu, поэтому я почти уверен, что они не будут использовать какие-либо .exeфайлы.
— me_and 01

Я получаю это сообщение об ошибке, и я не могу найти «mongod.lock» в своей файловой системе. Применимы ли эти инструкции к Mac OSX?
— boulder_ruby 08

5

Либо ваш mongod не запущен (проверьте с помощью команды «ps»), либо он прослушивает какой-то внешний IP-адрес, а не localhost. Поэтому сначала проверьте список процессов, запущен ли mongod. Если да, проверьте "netstat -nap" для соответствующего порта.

Конечно, вы можете запустить mongod на консоли вручную или даже просмотреть файл журнала mongod (если он настроен ... в зависимости от того, как вы установили mongod).


5

Сначала вы должны убедиться, что все файлы и каталоги в вашей папке / var / lib / mongodb / (или любой другой папке, на которую указывает dbpath) принадлежат пользователю mongodb и группе mongodb.

cd /var/lib/mongodb/
sudo chown mongodb filename.*
sudo chgrp mongodb filename.*
sudo chown -R mongodb directory
sudo chgrp -R mongodb directory

(Замените имя файла и каталог соответствующими именами)

Затем вы можете снять блокировку, восстановить базу данных и перезапустить демон, как уже упоминали другие люди:

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

Почему по этому поводу нет голосов? Это было единственное решение среди полдюжины записей SO, которые я просмотрел, которое сработало для меня. Спасибо, сэр.
— FRD

Команда для запуска с конфигурационным файлом и принудительного восстановления есть sudo -u mongodb mongod -f /etc/mongod.conf --repairв Ubuntu 14.
— okoboko

5

Сначала запустите свой сервер mongo с помощью

Users-MacBook-Pro:csv1 Admin$ mongod
all output going to: /usr/local/var/log/mongodb/mongo.log

Затем откройте другое окно терминала и откройте оболочку

Users-MacBook-Pro:csv1 Admin$ mongo

2

Также убедитесь, что в корневом разделе достаточно места для запуска mongod.

df -h /

Вы увидите что-то подобное при запуске mongod:

Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten] 
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit: 
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...


1

Это может быть комбинация $ PATH и проблемы с разрешением.

Попробуйте выполнить следующие шаги:

Обновите переменную $ PATH, чтобы она указывала на файл bin MongoDB. В моем случае brew install MongoDB в эту папку:

/usr/local/Cellar/mongodb/2.4.6/

Чтобы обновить переменную $ PATH, сделайте следующее:

$ sudo vi /etc/paths

Затем нажмите «i», чтобы вставить текст в Vi, добавьте путь к MongoDB в конец файла «paths» и перезапустите терминал.

/usr/local/Cellar/mongodb/2.4.6/bin

Используйте «Esc: w q» для сохранения и выхода из редактора Vi.

Используйте echo для отображения вашей переменной пути:

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin

Теперь попробуйте проверить версию Mongo, если вы подписались, значит, вы на правильном пути!

$ mongo --version
MongoDB shell version: 2.4.6

Теперь нам нужно создать каталог базы данных. Я использовал расположение по умолчанию '/ data / db', предложенное в документации MongoDB. Я также создал каталог журналов, чтобы избежать проблем с разрешениями, пока Mongo пытается создавать какие-либо журналы. Измените владельца, и это сделает работу.

$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data

Теперь мы создадим конфигурационный файл по умолчанию для MongoDB, который будет предоставляться при первом запуске команды mongod. Теперь я также хотел бы указать, что mongod запустит службу, которая будет прослушивать входящие соединения для передачи данных. Это похоже на выполнение '$ service mysqld start'. Давайте продолжим и создадим файл конфигурации. Имейте в виду, что я создал очень простой файл конфигурации. Однако вы можете добавить множество других переменных для настройки MongoDB. Я впервые играю с MongoDB, поэтому я знаю столько, сколько читал о документации MongoDB! Я создал mongodb.conf.

$ sudo vi /etc/mongodb.conf

Добавьте следующее:

fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true

Обратите внимание, что порт по умолчанию для сервера MongoDB - 27017. Используйте свой собственный путь для dbpath и logpath, который вы создали на шаге - 5. Не забудьте закрыть и сохранить файл conf.

Теперь мы готовы запустить нашу службу MongoDB. Откройте два экземпляра Терминала. В Терминале 1 введите:

$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting

Если вы получили сообщение выше, знайте, что вы успешно запустили службу Mongod.

Теперь, чтобы подключиться к нему, в Терминале 2 введите следующее:

$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>

Игнорируйте предупреждения, но вы успешно подключились к «тестовой» базе данных! Круто!

Вот и все. Я применил это решение, когда впервые попытался установить копию MongoDB на свой Mac. Посмотрим, поможет ли это и вам.

Подробную публикацию вы можете найти здесь - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094 .

Я надеюсь, что это помогает!

Ура, Чинмей


Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится.
— Radim Köhler

@ RadimKöhler, спасибо за внимание. Я поправил ответ. Надеюсь, это кому-то поможет. Ура.
— Chinmay

1

Я решил эту проблему в ubuntu 12.04, выполнив следующие шаги:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Я удалил mongo, а затем снова установил его
4) перезапуск sudo service mongodb

и все хорошо

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