не может начать mongodb как sudo - PullRequest
16 голосов
/ 25 июля 2011

mongodb возвращает ошибки, связанные с доступом к файлам при попытке запуска:

root@mongo01:~# sudo service mongodb start
mongodb start/running, process 4118
root@mongo01:~# Mon Jul 25 17:03:54 [initandlisten] MongoDB starting : pid=4118 port=27017 dbpath=/var/lib/mongodb 64-bit 
Mon Jul 25 17:03:54 [initandlisten] db version v1.8.2, pdfile version 4.5
Mon Jul 25 17:03:54 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
Mon Jul 25 17:03:54 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Mon Jul 25 17:03:54 [initandlisten] couldn't open /var/lib/mongodb/adrise.ns errno:13 Permission denied
Mon Jul 25 17:03:54 [initandlisten] error couldn't open file /var/lib/mongodb/adrise.ns terminating
Mon Jul 25 17:03:54 dbexit: 
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to close listening sockets...
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to flush diaglog...
Mon Jul 25 17:03:54 [initandlisten] shutdown: going to close sockets...
Mon Jul 25 17:03:54 [initandlisten] shutdown: waiting for fs preallocator...
Mon Jul 25 17:03:54 [initandlisten] shutdown: closing all files...
Mon Jul 25 17:03:54 closeAllFiles() finished
Mon Jul 25 17:03:54 [initandlisten] shutdown: removing fs lock...
Mon Jul 25 17:03:54 dbexit: really exiting now

или

Mon Jul 25 17:03:22 [initandlisten] MongoDB starting : pid=4095 port=27017 dbpath=/var/lib/mongodb 64-bit 
Mon Jul 25 17:03:22 [initandlisten] db version v1.8.2, pdfile version 4.5
Mon Jul 25 17:03:22 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
Mon Jul 25 17:03:22 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Mon Jul 25 17:03:22 [initandlisten] journal dir=/var/lib/mongodb/journal
Mon Jul 25 17:03:22 [initandlisten] recover : no journal files present, no recovery needed
Mon Jul 25 17:03:22 [initandlisten] info preallocateIsFaster couldn't run; returning false
Mon Jul 25 17:03:22 [initandlisten] exception in initAndListen std::exception: couldn't open file /var/lib/mongodb/journal/j._0 for writing errno:13 Permission denied, terminating
Mon Jul 25 17:03:22 dbexit: 
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to close listening sockets...
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to flush diaglog...
Mon Jul 25 17:03:22 [initandlisten] shutdown: going to close sockets...
Mon Jul 25 17:03:22 [initandlisten] shutdown: waiting for fs preallocator...
Mon Jul 25 17:03:22 [initandlisten] shutdown: lock for final commit...
Mon Jul 25 17:03:22 [initandlisten] shutdown: final commit...
Mon Jul 25 17:03:22 [initandlisten] shutdown: closing all files...
Mon Jul 25 17:03:22 closeAllFiles() finished
Mon Jul 25 17:03:22 [initandlisten] shutdown: journalCleanup...
Mon Jul 25 17:03:22 [initandlisten] removeJournalFiles
Mon Jul 25 17:03:22 [initandlisten] shutdown: removing fs lock...
Mon Jul 25 17:03:22 dbexit: really exiting now

когда я пытаюсь:

root @ mongo01: ~ # mongodb -f /etc/mongodb.conf

все начинается правильно, есть идеи, что вызывает проблемы?

Спасибо

Ответы [ 5 ]

53 голосов
/ 02 августа 2013

Mon Jul 25 17:03:54 [initandlisten] couldn't open /var/lib/mongodb/adrise.ns errno:13 Permission denied

Это проблема с разрешениями, выполните следующую команду:

sudo chown -R mongodb:mongodb /var/lib/mongodb
21 голосов
/ 11 июля 2012

Так что у меня возникла эта проблема довольно внезапно, и я не уверен почему.Проблема в том, что файл upstart хочет запустить mongo как пользователь mongodb.Начиная с /etc/init/mongodb.conf:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf; fi

Часть chuid говорит, что она запускается от имени другого пользователя, даже если вы запускаете этот скрипт от имени пользователя root.По какой-то причине, когда я сделал ls -l в /var/lib/mongodb, я заметил, что все файлы принадлежат пользователю root, поэтому наш пользователь mongodb не мог получить к ним доступ.Я просто сделал это:

sudo chown mongodb:mongodb /var/lib/mongodb

И все было хорошо.Как проблема возникла в первую очередь?Не уверен.

1 голос
/ 25 июля 2011

Этот файл является вашим первым файлом данных /var/lib/mongodb/adrise.ns.На самом деле, если быть точным, это файл пространства имен, который определяет другие файлы БД.

Для работы MongoDB процессу mongod потребуется доступ к двум папкам:

  1. Данныепапка : в вашем случае /var/lib/mongodb/
  2. Папка журнала : не уверен, куда вы положили это

Теперь, если вы запустите это какпользователь root должен иметь доступ к каждой папке каждой .Но вы должны убедиться, что никто не блокирует эту папку.

Однако вы должны иметь возможность запускать ее с более низкими разрешениями.Как правило, вам нужны только разрешения на уровне пользователя, просто убедитесь, что у пользователя есть доступ к этой папке.Если возможно, вы захотите запустить его на уровне ниже, чем root.Многие люди фактически делают пользователя mongodb и запускают его в своем собственном контексте.

0 голосов
/ 12 апреля 2018

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

sudo chown -R mongodb:mongodb /var/lib/mongodb

И

sudo service mongod restart

может помочь вам.

0 голосов
/ 09 октября 2015

У меня была эта проблема, когда я удалял Монго 3.6 и устанавливал Монго 2.4! Мое решение:

  1. Создать новый каталог для вашей БД (немного / var / lib / mongodb)
  2. Редактировать конфигурацию /etc/mongod.conf (dbpath = / var / lib / mongodb)
  3. Старт mongod
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...