невозможно запустить локальный сервер 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, но он показывает nogitversion по ошибке.


У меня была та же проблема, и это решение сработало для меня stackoverflow.com/questions/5798549/…
Эдди

Ответы:


176

Пытаться:

sudo service mongod stop
sudo mongod

Чтобы остановить текущий активный сервис mongodb, что позволит вам затем запустить новый


1
я также получил служебное сообщение, но решил проигнорировать его и попытаться перезапустить снова с помощью "sudo mongod", и после того, как оно наконец
заработало

2
Разве это не должно быть mongod (не mongodb)? На основе docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/...
Ксавье

5
sudo service mongodb stopработал для меня на Ubuntu 14.10.
Джо Корнели

1
В OS X нет служебной команды. Если у вас установлен mongo через homebrew, вы можете использовать его brew services. (через unix.stackexchange.com/questions/155715/… )
Чарли Стэнард

1
@HarshaMV `brew services stop <формула>`
Джейкоб

149

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

Используйте sudo killall -15 mongodвместо


2
Это не отвечает на оригинальный вопрос.
Бо Грэнтэм

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

4
На самом деле выполнение killall фактически работало на меня, вместо того, чтобы пытаться остановить службу. Так что, хотя он не отвечает на вопросы. Это было полезно
Андре Пена

59

Андреас Юнг:

"Сб. 25 июня 09:38:51 [initandlisten] listen (): сбой bind () errno: 98 Адрес уже используется для сокета: 0.0.0.0:27017

говорит само за себя.

Другой экземпляр 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 июня 09:38:51 [initandlisten] listen (): сбой bind () errno: 98 Адрес, уже используемый для сокета: 0.0.0.0:27017

говорит само за себя.

Другой экземпляр mongod уже запущен и выделяет порт MongoDB по умолчанию, который является 27017.

Либо убейте другой процесс, либо используйте другой порт.


47
Обнаружил это на странице начала работы ... ** Когда mongodb ** установлен через aptitude, он уже запущен (поэтому в примере вам не нужно его запускать). Затем просто наберите: $ mongo .. так как я лично не запускаю mongod и следовал краткому руководству .. я знал, что он уже запущен ...
sakthig

@Sakti: Да, это уже работает для меня! Я думаю, что я сделал через aptitude. Спасибо!
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» - это pid, в вашем случае он может быть другим. Затем убейте этот процесс, используя следующую команду:

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
retrovertigo

Тогда Mongod не должен быть запущенным процессом. Возможно, адрес используется другим процессом
Джон Оттенлипс

7

Попробуйте другой порт, если вы не можете найти какие-либо текущие запущенные процессы или их уничтожение не работает. Например, попробуйте 27018, потому что по умолчанию 27017.

mongod  --port 27018

Я выяснил это с помощью команды, mongod --help



6

Попробуйте killall -15 mongod / killall mongod. Даже после этого, если это не сработает, удалите папку хранения db, введя следующие команды: sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Монитор активности , ищи mongod , скрести его. затем снова запустить mongod. задача решена.


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

4

Откройте терминал и введите:

mkdir -p /data/db

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

mongod

3

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

Я проверил документы, и он сказал, чтобы напечатать

mongo
use admin
db.shutdownServer()

3

Невозможно запустить MongoDB в основном из-за нечистого завершения работы. Для исправления удалите файл mongod.lock. Этот файл находится в папке данных.

Узнайте, где находится ваша папка данных, посмотрев в файл mongodb.conf или mongod.conf. (Файл конфигурации в / etc в системах 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 (должен следовать путь вашего БД)


1

Возможно, сервер уже запущен. Пожалуйста, проверьте это по команде Монго работает или нет.


1

Чтобы решить проблему в Windows , у меня работают следующие шаги:

Например, установлена ​​версия 3.6 mongoDB, а путь установки MongoDB - «D: \ Program Files \ 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

Он показывает ошибку listen (): 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.