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

88

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

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

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

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

zjm1126
источник
Как ты его установил? Вы использовали способности? Вы скачали тарбал напрямую?
Брайан Миглиориси
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

boulder_ruby
источник
вы также можете установить 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 ... На всякий случай, возможно, вам придется настроить некоторые слова в зависимости от используемого вами дистрибутива;)

Jmlevick
источник
То же решение применяется к вопросу: 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.

user1391225
источник
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

В Ubuntu попробуйте следующее:

sudo invoke-rc.d mongodb start
Виктор
источник
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

и все хорошо

Алмас
источник