MongoDB на Ubuntu не запускается как Служба, ничего в журнале

я запускаю MongoDB 2.2 на Ubuntu, и если я запускаю:

sudo mongod

Я получаю сообщение об ошибке, что он не может найти /data/db, которого нет в базе данных. В команду mongod.conf путь к базе данных указан как Ubuntu 10gen по умолчанию /var/lib/mongodb где находится БД. Кажется mongod не находит файл conf. Поэтому, когда я бегу:

sudo mongod -f /etc/mongodb.conf

сервер запускается нормально, и вывод записывается в файл журнала:/var/log/mongodb/mongodb.log. Все счастливы. Я могу переключиться на другую оболочку, войдите в Mongo shell, просмотрите базы данных и запустите запросы.

Итак, я отменяю это и пытаюсь запустить как службу:

> sudo status mongodb
mongodb stop/waiting
> sudo start mongodb
mongodb start/running, process 10468

пока выглядит неплохо, но сервер mongo не запустился. Бежит другой:

> sudo status mongodb
mongodb stop/waiting
> mongo
MongoDB shell version: 2.2.0
connecting to: test
Sat Sep  1 19:07:43 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

"тест" не является правильной базой данных, и ничего не отображается в файле журнала.

Я в недоумении, что может быть не так. Я проверил сценарии выскочек, и они кажутся прекрасными. /etc/init/mongodb.conf работает:

mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf

9 ответов


хорошо, все это сводится к разрешениям, но давайте сделаем это шаг за шагом. При запуске sudo mongod Он вообще не загружает файл конфигурации, он буквально начинается с скомпилированного по умолчанию-port 27017, путь к базе данных of / data / db etc. - вот почему вы получили ошибку о невозможности найти эту папку. "Ubuntu default" используется только тогда, когда вы указываете его на конфигурационный файл (если вы начинаете использовать команду service, это делается для вас за сцены.)

затем вы запустили его так:

sudo mongod -f /etc/mongodb.conf

если раньше не было проблем, то теперь будет-вы запустили процесс, с вашей обычной конфигурацией (указывая на свой обычный dbpath и log) в качестве пользователя root. Это означает, что теперь в этой обычной папке MongoDB будет несколько файлов с пользователем: группа root:root.

это вызовет ошибки при попытке запустить его как обычный сервис снова, потому что пользователь в MongoDB (который служба попытается запустить как) не будет иметь разрешения на доступ к этим root:root файлы, и, самое главное, он, вероятно, не сможет записать в файл журнала, чтобы дать вам какую-либо информацию.

поэтому, чтобы запустить его как обычный сервис, нам нужно исправить эти разрешения. Во-первых, убедитесь, что MongoDB в настоящее время не работает как root, а затем:

cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .

это должно исправить (при условии, что пользователь: группа mongodb:mongodb), хотя, вероятно, лучше всего проверить с помощью ls -al или подобное, чтобы быть уверенным. Как только это будет сделано, вы сможете снова успешно запустить службу.


сначала подтвердите, что в MongoDB пользователь / группа имеет разрешение на запись в оба данные:

$ судо Чаун -Р в MongoDB:MongoDB в файле /var/lib в/в MongoDB/.

$ судо Чаун -Р в MongoDB:MongoDB в каталоге /var/журнал/в MongoDB.log

запуск MongoDB как демон (фоновый процесс) с помощью следующей команды:

$ mongod --fork --dbpath /ВАР/Либ/в MongoDB/ --smallfiles --пути журнала /var/log / mongodb.log --logappend

до Выключить MongoDB введите Mongo CLI, получите доступ к администратору и выполните команду выключения:

$ ./монго

> используйте admin

> db.shutdownServer()

Ref:http://www.mongodb.org/display/DOCS/Starting + и + остановка+Монго


У меня тоже была такая же проблема. Поэтому я пошел на cd/var/lib/ mongodb / и удалил mongod.файл блокировки Тогда это сработало для меня.


ничего не работало для меня, тогда я обнаружил, что это была проблема разрешений на


после проверки всех разрешений в папках данных, журнала и журнала, как было предложено @nelsonic, моя проблема была решена путем предоставления разрешения на блокировку файла в папке /tmp

sudo chown mongod:mongod mongodb-27017.sock  

я запускал его как экземпляр AWS Amazon Linux. Я понял это, выполнив как пользователь mongod, как показано ниже, а затем, исследуя код ошибки. Это может быть полезно для других устранения неполадок.

sudo -S -u mongod mongod -f /etc/mongod.conf

ни один из вышеперечисленных ответов работал для меня. Я, наконец, понял это, отладив скрипт init с помощью:

sudo bash-x/etc / init.D / mongodb start

и видя, что он передает неправильный путь конфигурации к mongod. Я просто изменил строку в /etc / init.d / mongodb из " CONF= / etc / mongodb.conf " to " CONF= / etc / mongod.conf". Версия 2 использует первую, и установка версии 3 добавлена /etc / mongod.conf с новым форматом, но, по-видимому, не обновил init скрипт.

UPDATE: теперь у меня есть гораздо более странная проблема, когда скрипт init работает, но только если я запускаю его с помощью "sudo bash-x /etc/init.D / mongodb start", а не с "sudo service mongodb start". То же самое для остановки.


после того, как ни один из вышеперечисленных ответов не сработал для меня, удаление моего файла журнала вернуло Монго к жизни.


в эти дни эта ошибка может возникнуть, если вы обновили mongod, и вы работаете и старую базу данных. Mongod будет использовать движок wiredTiger по умолчанию, и у вас будет база данных mmapv1

измените настройку движка в /etc / mongod.conf

# engine: wiredTiger
engine: mmapv1

осторожно-YAML чувствителен к пробелам

journalctl / systemd не увидит эту проблему. Регистрация Войти команду mongod в /var/журнал/в MongoDB/команду mongod.log

Я предполагаю, что вы можете преобразовать базу данных с что-то вроде описанных здесь шагов

https://docs.mongodb.com/manual/tutorial/change-standalone-wiredtiger/


просто попробуйте эту команду:

sudo chown mongodb /tmp/mongodb-27017.sock