Подтвердить что ты не робот

Не может начинать mongodb как sudo

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

[email protected]:~# sudo service mongodb start
mongodb start/running, process 4118
[email protected]:~# 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

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

Спасибо

4b9b3361

Ответ 1

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

Ответ 2

У меня была эта проблема довольно внезапно, и я не знаю, почему. Проблема в том, что файл 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 сообщает, что она запускается как другой пользователь, даже если вы используете этот script как root. По какой-то причине, когда я делал ls -l в /var/lib/mongodb, я заметил, что все файлы принадлежат root, поэтому наш пользователь mongodb не мог с ними связаться. Я просто сделал это:

sudo chown mongodb:mongodb /var/lib/mongodb

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

Ответ 3

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

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

  • Папка данных: в вашем случае /var/lib/mongodb/
  • Папка журнала: не знаете, куда вы положили этот

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

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

Ответ 4

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

  • Создайте новый каталог для you'r DB (некоторые/var/lib/mongodb)
  • Изменить конфигурацию /etc/mongod.conf(dbpath =/var/lib/mongodb)
  • Запустить mongod