Вы должны запустить эту команду как пользователь mongodb. Если вы запустите его как root, тогда root будет владеть файлами в / var / lib / mongodb /, которые необходимы для запуска демона mongodb, и поэтому, когда демон попытается запустить позже как пользователь mongodb, у него не будет разрешений для запуска . В этом случае вы получите следующую ошибку: Невозможно создать / открыть файл блокировки для lockfilepath: /var/lib/mongodb/mongod.lock errno: 13 Permission denied, terminating.
В Ubuntu вы должны указать файл конфигурации /etc/mongodb.conf, используя флаг -f. В противном случае он будет искать файлы данных в неправильном месте, и вы увидите следующую ошибку: dbpath (/ data / db /) не существует, завершается.
Просто добавьте себя в группу mongodb: useradd -G mongodb fady замените fady своим именем пользователя.
fady mohamed osman
2
Мне пришлось использовать как информацию из этого ответа, так и из ответа @boulder_ruby. Это потому, что мой / data / db / отсутствовал. Возможно, это могло бы быть хорошим обновлением, чтобы этот ответ был более полным.
Если я попробую `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 111:20:33Error: 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.
вы также можете установить dbpath следующим образом: mongod --dbpath ../data
cbaigorri
20
На самом деле это не ошибка ... Здесь происходит то, что Mongo полагается на демон для запуска локального сервера базы данных, поэтому для того, чтобы «запустить» сервер mongo в вашей оболочке, вы должны запустить службу mongo первый.
Для Fedora Linux (это тот дистрибутив, который я использую) Вам необходимо выполнить следующие команды:
1 sudo service mongod start
2 mongo
И вот оно! сервер будет работать. Теперь, если вы хотите, чтобы служба Mongo запускалась при загрузке системы, вам нужно запустить:
sudo chkconfig --levels 235 mongod on
И это все! Если вы это сделаете, теперь в оболочке вам просто нужно ввести mongo , чтобы запустить сервер, но это почти все, проблема в том, что вам нужно сначала запустить СЕРВИС, а затем СЕРВЕР :)
PS Команды, которые я опубликовал, могут работать и в других дистрибутивах Linux, а не только в Fedora ... На всякий случай, возможно, вам придется настроить некоторые слова в зависимости от используемого вами дистрибутива;)
Удалит ли этот метод существующие базы данных в 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 01
Я получаю это сообщение об ошибке, и я не могу найти «mongod.lock» в своей файловой системе. Применимы ли эти инструкции к Mac OSX?
boulder_ruby 08
5
Либо ваш mongod не запущен (проверьте с помощью команды «ps»), либо он прослушивает какой-то внешний IP-адрес, а не localhost. Поэтому сначала проверьте список процессов, запущен ли mongod. Если да, проверьте "netstat -nap" для соответствующего порта.
Конечно, вы можете запустить mongod на консоли вручную или даже просмотреть файл журнала mongod (если он настроен ... в зависимости от того, как вы установили mongod).
Сначала вы должны убедиться, что все файлы и каталоги в вашей папке / var / lib / mongodb / (или любой другой папке, на которую указывает dbpath) принадлежат пользователю mongodb и группе mongodb.
Почему по этому поводу нет голосов? Это было единственное решение среди полдюжины записей 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
Затем откройте другое окно терминала и откройте оболочку
Также убедитесь, что в корневом разделе достаточно места для запуска mongod.
df -h /
Вы увидите что-то подобное при запуске mongod:
Mon Aug 1217:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 1217:02:59.159 [initandlisten]
Mon Aug 1217:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 1217:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 1217:02:59.159 [initandlisten]
Mon Aug 1217:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 1217:02:59.159 dbexit:
Mon Aug 1217:02:59.159 [initandlisten] shutdown: going to close listening sockets...
Теперь попробуйте проверить версию Mongo, если вы подписались, значит, вы на правильном пути!
$ mongo --version
MongoDB shell version: 2.4.6
Теперь нам нужно создать каталог базы данных. Я использовал расположение по умолчанию '/ data / db', предложенное в документации MongoDB. Я также создал каталог журналов, чтобы избежать проблем с разрешениями, пока Mongo пытается создавать какие-либо журналы. Измените владельца, и это сделает работу.
Теперь мы создадим конфигурационный файл по умолчанию для MongoDB, который будет предоставляться при первом запуске команды mongod. Теперь я также хотел бы указать, что mongod запустит службу, которая будет прослушивать входящие соединения для передачи данных. Это похоже на выполнение '$ service mysqld start'. Давайте продолжим и создадим файл конфигурации. Имейте в виду, что я создал очень простой файл конфигурации. Однако вы можете добавить множество других переменных для настройки MongoDB. Я впервые играю с MongoDB, поэтому я знаю столько, сколько читал о документации MongoDB! Я создал mongodb.conf.
Обратите внимание, что порт по умолчанию для сервера 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 316:55:43.527 [initandlisten]
Tue Sep 316:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>
Игнорируйте предупреждения, но вы успешно подключились к «тестовой» базе данных! Круто!
Вот и все. Я применил это решение, когда впервые попытался установить копию MongoDB на свой Mac. Посмотрим, поможет ли это и вам.
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится.
Radim Köhler
@ RadimKöhler, спасибо за внимание. Я поправил ответ. Надеюсь, это кому-то поможет. Ура.
Chinmay
1
Я решил эту проблему в ubuntu 12.04, выполнив следующие шаги:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Я удалил mongo, а затем снова установил его
4) перезапуск sudo service mongodb
mongod
первымОтветы:
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
Обратите внимание на следующее:
источник
sudo rm /var/lib/mongodb/mongod.lock sudo -u mongodb mongod -f /etc/mongodb.conf --repair sudo service mongodb start
Вот и все, иногда требуется некоторое время, чтобы запустить монго после выполнения этих операций.
источник
Mon Aug 22 11:28:17.919 Can't specify both --journal and --repair options.
Пробуем запустить $ 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 для своих файлов базы данных, которых в данном случае не существует.
Ты не можешь начать
пока ты не справишься
Попробуйте создать эти каталоги и убедитесь, что они доступны для записи тому же пользователю, который запускает процесс mongod.
** См. Аналогичный вопрос - Получение ошибки «Ошибка: не удалось подключиться к серверу 127.0.0.1 shell / mongo.js» и при попытке запустить mongodb на mac osx lion
источник
На самом деле это не ошибка ... Здесь происходит то, что Mongo полагается на демон для запуска локального сервера базы данных, поэтому для того, чтобы «запустить» сервер mongo в вашей оболочке, вы должны запустить службу mongo первый.
Для Fedora Linux (это тот дистрибутив, который я использую) Вам необходимо выполнить следующие команды:
1 sudo service mongod start 2 mongo
И вот оно! сервер будет работать. Теперь, если вы хотите, чтобы служба Mongo запускалась при загрузке системы, вам нужно запустить:
sudo chkconfig --levels 235 mongod on
И это все! Если вы это сделаете, теперь в оболочке вам просто нужно ввести mongo , чтобы запустить сервер, но это почти все, проблема в том, что вам нужно сначала запустить СЕРВИС, а затем СЕРВЕР :)
PS Команды, которые я опубликовал, могут работать и в других дистрибутивах Linux, а не только в Fedora ... На всякий случай, возможно, вам придется настроить некоторые слова в зависимости от используемого вами дистрибутива;)
источник
sudo service mongodb start
У меня такая же проблема возникла при попытке установить mongo. Я получил ошибку как,
ошибка
"Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84"
Решение:
Сначала установите mongod, используя:
Затем введите
затем
sudo rm /var/lib/mongodb/mongod.lock
затем
Спасибо
источник
Вам нужно удалить файл блокировки
mongod.lock
или/var/lib/mongodb/mongod.lock
на ubuntu, затем вам нужно сначала запуститьmongod.exe
илиservice mongodb start
на ubuntu, затем запуститьmongo.exe
илиmongo
на ubuntu.источник
.exe
файлы.Либо ваш mongod не запущен (проверьте с помощью команды «ps»), либо он прослушивает какой-то внешний IP-адрес, а не localhost. Поэтому сначала проверьте список процессов, запущен ли mongod. Если да, проверьте "netstat -nap" для соответствующего порта.
Конечно, вы можете запустить mongod на консоли вручную или даже просмотреть файл журнала mongod (если он настроен ... в зависимости от того, как вы установили mongod).
источник
Сначала вы должны убедиться, что все файлы и каталоги в вашей папке / 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
источник
sudo -u mongodb mongod -f /etc/mongod.conf --repair
в Ubuntu 14.Сначала запустите свой сервер mongo с помощью
Users-MacBook-Pro:csv1 Admin$ mongod all output going to: /usr/local/var/log/mongodb/mongo.log
Затем откройте другое окно терминала и откройте оболочку
источник
Также убедитесь, что в корневом разделе достаточно места для запуска mongod.
Вы увидите что-то подобное при запуске 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...
источник
В Ubuntu попробуйте следующее:
источник
Это может быть комбинация $ PATH и проблемы с разрешением.
Попробуйте выполнить следующие шаги:
Обновите переменную $ PATH, чтобы она указывала на файл bin MongoDB. В моем случае brew install MongoDB в эту папку:
/usr/local/Cellar/mongodb/2.4.6/
Чтобы обновить переменную $ PATH, сделайте следующее:
Затем нажмите «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. Я также создал каталог журналов, чтобы избежать проблем с разрешениями, пока Mongo пытается создавать какие-либо журналы. Измените владельца, и это сделает работу.
Теперь мы создадим конфигурационный файл по умолчанию для MongoDB, который будет предоставляться при первом запуске команды mongod. Теперь я также хотел бы указать, что mongod запустит службу, которая будет прослушивать входящие соединения для передачи данных. Это похоже на выполнение '$ service mysqld start'. Давайте продолжим и создадим файл конфигурации. Имейте в виду, что я создал очень простой файл конфигурации. Однако вы можете добавить множество других переменных для настройки MongoDB. Я впервые играю с MongoDB, поэтому я знаю столько, сколько читал о документации MongoDB! Я создал 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 .
Я надеюсь, что это помогает!
Ура, Чинмей
источник
Я решил эту проблему в ubuntu 12.04, выполнив следующие шаги:
1) sudo rm / var / log / mongodb
2) sudo rm / var / lib / mongodb
3) Я удалил mongo, а затем снова установил его
4) перезапуск sudo service mongodb
и все хорошо
источник