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

87

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

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

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

спасибо

  • 0
    Как вы это установили? Вы использовали способность? Вы скачали tarbal напрямую?
  • 1
    у меня была эта ошибка, и это было потому, что на Ubuntu я не запускал mongod первым
Теги:

13 ответов

124
  • Вручную удалите файл блокировки: sudo rm /var/lib/mongodb/mongod.lock
  • Запустите ремонт script: 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 Разрешение отказано, завершено.
  • В Ubuntu вы должны указать файл конфигурации /etc/mongodb.conf используя флаг -f. В противном случае он будет искать файлы данных в неправильное место, и вы увидите следующую ошибку: dbpath (/data/db/) не существует, завершение.
  • 0
    Отличная ссылка. Решил проблему точно.
  • 0
    Поляна это помогло.
Показать ещё 15 комментариев
33
sudo rm /var/lib/mongodb/mongod.lock   
sudo -u mongodb mongod -f /etc/mongodb.conf --repair 
sudo service mongodb start

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

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

Попытка запуска $mongod

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

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

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

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

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

1 sudo service mongod start
2 mongo

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

sudo chkconfig --levels 235 mongod on

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

P.S. Команды, которые я опубликовал, могут работать и с другими дистрибутивами linux, а не только в Fedora... В случае, если вам не нужно настраивать некоторые слова в зависимости от используемого дистрибутива;)

  • 0
    То же решение относится к вопросу: stackoverflow.com/questions/7958228/…
  • 0
    Столько раз я зашла в тупик и долго царапала голову, и, наконец, поняла: «О, я просто должна судо».
Показать ещё 1 комментарий
6

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

Ошибка

"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

Спасибо

  • 0
    Будет ли этот метод удалять существующие базы данных в Монго?
  • 0
    спасибо это действительно помогло
6

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

  • 0
    Операционная система установлена на Ubuntu, поэтому я уверен, что они не будут использовать файлы .exe .
  • 0
    Я получаю это сообщение об ошибке и не могу найти «mongod.lock» в моей файловой системе. Применимы ли эти инструкции к Mac OSX?
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
  • 0
    благодарю вас! коротко сладко и по существу. решил это для меня.
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
  • 0
    Как так получилось, что против этого нет возражений? Это было единственное решение среди полдюжины SO, которые я просмотрел, которые работали для меня. Спасибо, сэр.
  • 0
    Команда для запуска с файлом конфигурации и принудительного восстановления - это sudo -u mongodb mongod -f /etc/mongod.conf --repair на Ubuntu 14.
5

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

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

2

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

df -h /

Вы увидите smth, как это на 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 12.04 следующими шагами:
1) sudo rm/var/log/mongodb
2) sudo rm/var/lib/mongodb
3) Я удалил монго и снова установил его
4) sudo service mongodb restart

и все хорошо

1

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

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

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

/usr/local/Cellar/mongodb/2.4.6/

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

$ sudo vi /etc/paths

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

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

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

Используйте эхо, чтобы отобразить вашу переменную пути:

$ 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.Lets" и создание файла конфигурации. Имейте в виду, что я создал очень простой файл конфигурации. Тем не менее, вы можете добавить много других переменных для настройки 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. Откройте два экземпляра Terminal.In Terminal 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.

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

Cheers, Chinmay

  • 0
    Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы.
  • 0
    @ RadimKöhler, спасибо за внимание. Я исправил ответ. Надеюсь, это кому-нибудь поможет. Приветствия.
1

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

sudo invoke-rc.d mongodb start
  • 0
    Только это решение сработало для меня из всех ответов! Отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню