невозможно запустить локальный сервер mongodb

123

Я новичок в 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 по ошибке.

Теги:

22 ответа

139

Try:

sudo service mongod stop
sudo mongod

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

  • 38
    как мне это сделать в MacOSX. это сохранить сервис не команда
  • 1
    я также получил служебное сообщение, но решил проигнорировать его и попытаться перезапустить снова с помощью "sudo mongod" и после того, как оно наконец заработало
Показать ещё 7 комментариев
95

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

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

  • 1
    Это не отвечает на оригинальный вопрос.
  • 7
    killall mongod делает то же самое. -15 говорит killall отправить сигнал SIGTERM, что он делает по умолчанию.
Показать ещё 2 комментария
45

Андреас Юнг:

"Сб июн 25 09:38:51 [initandlisten] listen(): bind() failed 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
30

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

является самоязычным.

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

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

  • 46
    Обнаружил это на странице начала работы ... ** Когда mongodb ** установлен через aptitude, он уже запущен (поэтому в примере вам не нужно его запускать). Затем просто введите: $ mongo .., поскольку я лично не запускаю mongod, и я следовал краткому руководству .. я не знал, что он уже запущен ...
  • 0
    @Sakti: Да, это уже работает для меня! Я думаю, что я сделал через aptitude. Спасибо!
23

Узнайте из 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>

Вот оно!

15

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

killall mongod
  • 0
    запустил это с sudo, и это сработало
10

Использование:

sudo killall mongod

Он остановит сервер.

Затем запустите снова:

 mongod

он должен работать.

  • 1
    у меня сработало без использования sudo
6

Вы хотите сделать killall -15 mongod, потому что он все еще запущен, "Адрес уже используется для сокета: 0.0.0.0:27017". Затем вы можете снова запустить mongod.

  • 0
    Почему бы не просто killall mongod ?
  • 1
    No matching processes belonging to you were found
Показать ещё 1 комментарий
5

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

4

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

mongod  --port 27018

Я нашел это с помощью команды mongod --help

3

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

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

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

Узнайте, где находится ваша папка данных, просматривая файл mongodb.conf или mongod.conf. (Conf file под /etc в системах Linux.)

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

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

  • 1
    Это случалось со мной не раз, особенно на облачных серверах, которые были «сброшены», когда не отвечали. Это легко исправить и должно быть лучшим ответом.
2

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

mkdir -p /data/db

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

mongod
  • 0
    Но это на самом деле работает.
1

Проверьте журналы на /var/log/mongodb/mongod.log и попытайтесь вывести ошибку. В моем случае это было

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

Удалено/tmp/mongodb-27017.sock, и оно сработало.

1

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

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

mongo
use admin
db.shutdownServer()
  • 1
    Это правильный ответ! "killall", так жестоко ...
1

Я столкнулся с той же проблемой. Хотя служба 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
1

Возможно, сервер уже запущен. Проверьте его с помощью команды mongo.

1

попробуйте

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

- dbpath (должен следовать путь вашего db)

0

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

mongod --dbpath <path to the directory>
0

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

0

(Если вы используете linux), если

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

или

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

не удалось устранить проблему, выйти из системы и повторно войти в систему. Это решило мою проблему.

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

0

Показывает ошибку listen(): bind() failed errno: 98 Адрес уже используется для сокета: 0.0.0.0:27017 то есть адрес 27017 уже используется какой-либо другой услугой.  пожалуйста, проверьте это "netstat -apt | grep" 27017 "" Команда

Ещё вопросы

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