не вдається запустити локальний сервер mongodb


167

Я новачок у mongodb .. коли я спробував запустити локальний сервер mongodb з mongodкомандою, він не вдався запустити і кинув цю помилку ..

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

Я спробував видалити mongod.lockфайл ... Я побіг mongod --repair.. Я також змінив дозволи на mongod.lockфайл.

але, здається, нічого не працює .. він продовжує показувати ту ж помилку .. що мені робити.?

У мене також встановлена ​​версія git 1.7.4.1, але вона показує ногіверсію помилково.


У мене була така ж проблема, і це рішення працювало для мене stackoverflow.com/questions/5798549/…
Едді,

Відповіді:


176

Спробуйте:

sudo service mongod stop
sudo mongod

Щоб зупинити поточну активну службу mongodb, що дозволяє вам запустити нову


1
Я також отримав сервісне повідомлення, але вирішив проігнорувати його і спробуйте перезапустити знову з "sudo mongod", і після того, як він нарешті запрацював
kpierce8,

2
Чи не повинен це бути монгодом (не mongodb)? На основі docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/…
xavier

5
sudo service mongodb stopпрацював для мене на Ubuntu 14.10.
Джо Корнелі

1
В OS X немає сервісної команди. Якщо у вас встановлено монго через домашню мову, ви можете використовувати його brew services. (через unix.stackexchange.com/questions/155715/… )
Чарлі Станар

1
@HarshaMV `Служби пивоваріння зупиняються <formula>`
Яків

149

Не вбивайте процес за допомогою сигналу -9, оскільки це може спричинити шкоду: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Використовуйте sudo killall -15 mongodзамість цього


2
Це не дає відповіді на початкове запитання.
Bea Grantham

8
killall mongodробить те ж саме. -15каже killallпослати SIGTERM сигнал, який він робить за замовчуванням.
T Blank

4
Насправді робити килла фактично працювало для мене замість того, щоб намагатися припинити службу. Тож, хоч і не відповідає на запитання. Це було корисно
Андре Пена

59

Андреас Юнг:

"Сб 25 черв.

є самомовним.

Ще один екземпляр mongod вже запущений і виділяє порт MongoDB за замовчуванням, який становить 27017.

Або вбийте інший процес або використовуйте інший порт ".

У цьому випадку введіть таку команду

ps wuax | grep mongo

Ви повинні побачити щось таке, що виглядає приблизно так

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

Тепер введіть команду kill для екземпляра mongod (у цьому випадку 31936):

kill 31936

29

Сб 25 черв.

є самомовним.

Ще один екземпляр mongod вже запущений і виділяє порт MongoDB за замовчуванням, який становить 27017.

Або вбийте інший процес або використовуйте інший порт.


47
Виявив це на сторінці початку роботи ... ** Коли mongodb ** встановлений через aptitude, він вже працює (тому в прикладі його не потрібно запускати). Тоді просто наберіть: $ Монго .. так як я особисто западина почала mongod і я слідував швидкий старт підручник .. я вм'ятина знав , що це був уже запущений ...
sakthig

@Sakti: Так, це вже працює для мене! Я здогадуюсь, що я зробив через здатність. Дякую!
sk8terboi87 ツ

29

Дізнайтеся з netstat, який процес запущений порт mongodb (27017)

команда:

sudo netstat -tulpn | grep :27017

Вихід буде:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

У моєму випадку "6432" - це під, він може бути різним у вашому випадку. Потім вбити цей процес за допомогою наступної команди:

sudo kill <pid>

Це воно!


25

Використання:

sudo killall mongod

Це зупинить сервер.

Потім перезапустіть mongod:

sudo service mongod restart

це має працювати.


23

У вас уже запущений процес. Ви можете вбити його за допомогою команди:

killall mongod

15

Ви хочете зробити , killall -15 mongodтому що він все ще працює: Address already in use for socket: 0.0.0.0:27017.

Тоді ви можете mongodзнову бігти .


Чому б не просто killall mongod?
Дмитро Зайцев

1
No matching processes belonging to you were found
ретровертиго

Тоді монгод не повинен бути запущеним процесом. Можливо, адреса використовується іншим процесом
Джон Оттенліпс

7

Спробуйте інший порт, якщо ви не можете знайти будь-які поточні запущені процеси або їх вбивство не працює. Наприклад, спробуйте 27018, тому що за замовчуванням 27017.

mongod  --port 27018

Я дізнався це за допомогою команди, mongod --help


7

Я пропоную використовувати замість цього:

$sudo service mongodb stop

Це могло б спрацювати.


6

Спробуйте або killall -15 mongod / killall mongod Навіть після цього, якщо це не працює, тоді видаліть папку зберігання db, ввівши наступні команди sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Monitor Monitor , шукайте mongod , перекресліть його. потім знову запустіть mongod. проблема вирішена.


OP не вказує ОС, але файли журналів чітко позначають Linux.
Нік Нілов


3

У мене була така ж проблема, якщо я намагався відкрити новий екземпляр mongod, і він сказав, що він вже працює.

Я перевірив документи, і він сказав набрати

mongo
use admin
db.shutdownServer()

3

Неможливо запустити MongoDB в основному через нечисте відключення. Щоб виправити, видаліть файл mongod.lock. Цей файл знаходиться в папці даних.

Дізнайтеся, де знаходиться ваша папка даних, заглянувши у файл mongodb.conf або mongod.conf. (Конфігураційний файл під / тощо в системах Linux.)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

Наприклад, використовуючи вищевказану конфігурацію, файл знаходиться за адресою /var/lib/mongodb/mongod.lock. Просто видаліть його та перезапустіть mongodb.


1
Це траплялося зі мною не раз, особливо на хмарних серверах, які були "жорсткими скиданнями", коли не реагували. Це просте виправлення і має бути головною відповіддю.
SevakPrime

2

Я зіткнувся з тим же питанням. Хоча mongodbслужба не працює, журнал показав address already in useповідомлення.

 $netstat -tulpn | grep :27017 

нічого не повертає

При подальшому аналізі встановлено, що проблема була пов'язана з блокуванням файлу. Служба працює нормально, після видалення файлу блокування та його перезавантаження.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

Перевірте наявність журналів на /var/log/mongodb/mongod.log і спробуйте вивести помилку. У моєму випадку це було

Не вдалося від’єднати файл сокета /tmp/mongodb-27017.sock errno: 1 Операція не дозволена

Видалено /tmp/mongodb-27017.sock і воно спрацювало.


1

спробуйте

/usr/lib/mongodb/mongod.exe --dbpath c: data \ db

--dbpath (слід слідувати шляху вашого db)



1

Щоб вирішити проблему в Windows , для мене працюють наступні кроки:

Наприклад, встановлена ​​версія mongoDB версії 3.6, а шлях встановлення MongoDB - це "D: \ програмні файли \ MongoDB".

Створіть папку D: \ mongodb \ logs, а потім створіть файл mongodb.log всередині цієї папки.

Запустити cmd.exe як адміністратор ,

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

Видаліть ці два файли mongod.lockі storage.bsonв папці "D: \ mongodb \ data".

Потім введіть net start MongoDBcmd за допомогою права адміністратора, проблема буде вирішена.


0

Він показує помилку liste (): bind () fail errno: 98 Адреса, яка вже використовується для сокета: 0.0.0.0:27017, тобто адреса 27017 вже використовується якоюсь іншою службою. перевірте це за допомогою команди "netstat -apt | grep" 27017 ""


0

(Якщо ви використовуєте Linux,), якщо

mongod --shutdown --config=path/to/your/configFile.conf 

або

mongod --repair --config=path/to/your/configFile.conf 

не виправлено проблему, вихід із системи та повторний вхід . Це вирішило мою проблему.

Або ви можете вбити процес вручну з терміналу, я думаю.


0

Схоже, така ж помилка відображається в журналах, коли вам не вистачає налаштування середовища LC_ALL. Це заплутано, але ви можете виконати mongoклієнта, щоб побачити, що це проблема.


0

якщо ви вперше використовуєте монго, ви можете спершу встановити шлях

mongod --dbpath <path to the directory>

0

Процес вбивства не вирішив мого питання. Мій Mac зазнав аварії, і при перезапуску деяких файлів блокування (mongod.lock, WiredTiger.lock) були присутні в mongo dbPath. Я перемістив ці файли в іншу папку (я не видаляв, щоб уникнути більше проблем), а потім це спрацювало. Після успішної зірки я видалив переміщені файли блокування.

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