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


88

коли я встановлюю mongodb у своєму ubuntu, я намагаюся: ./mongo показує цю помилку:

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

так що я можу зробити,

Дякую


Як ви його встановили? Ви використовували схильність? Ви завантажили tarbal безпосередньо?
Bryan Migliorisi

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, він не матиме дозволів на запуск . У такому випадку ви отримаєте таку помилку: Неможливо створити / відкрити файл блокування для шляху до файлу блокування: /var/lib/mongodb/mongod.lock errno: 13 Дозвіл відмовлено, термінація припиняється.
  • В 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 /' відсутнє. Можливо, це може бути гарним оновленням, щоб ця відповідь була повнішою.
Fabricio Buzeto

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 (який я використовую Distro) потрібно виконати такі команди:

1 sudo service mongod start
2 mongo

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

sudo chkconfig --levels 235 mongod on

І це все! Якщо ви це зробите, тепер у оболонці вам просто потрібно набрати mongo , щоб запустити сервер, але це майже все, проблема полягає в тому, що ви повинні спочатку запустити SERVICE, а потім SERVER :)

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

Я отримую це повідомлення про помилку, і я не можу знайти "mongod.lock" у моїй файловій системі. Чи стосуються ці інструкції до Mac OSX?
boulder_ruby

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, щоб вказувати на ваш файл смітника MongoDB. У моєму випадку заваріть встановіть 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. Я також створив каталог журналів, щоб уникнути будь-яких проблем з дозволами, поки Монго намагається створити будь-які журнали. Зміни власника, і це зробить роботу.

$ 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 .

Сподіваюся, це допоможе!

На ура, Чінмай


Хоча це посилання може відповісти на питання, краще включити сюди основні частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться.
Радім Келер

@ RadimKöhler, дякую за звернення. Я виправив відповідь. Сподіваюся, це комусь допоможе. Ура.
Чінмай

1

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

і все добре

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.