Mongod жалуется, что нет папки / data / db - PullRequest
401 голосов
/ 31 октября 2011

Сегодня я впервые использую свой новый mac.Я следую руководству по началу работы на mongodb.org вплоть до шага, на котором создается каталог / data / db.Кстати, я использовал доморощенный маршрут.

Итак, я открываю терминал, и я думаю, что я нахожусь в том, что вы называете Домашним каталогом, потому что, когда я делаю «ls», я вижу папки настольных приложений Фильмы Музыка Фотографии Документы и Библиотека.1004 * Итак, сначала я сделал

mkdir -p /data/db

, там написано, что разрешение отклонено.Я продолжал пробовать разные вещи в течение получаса и в конце концов:

mkdir -p data/db

сработало.и когда я "ls", каталог данных и вложенная в него папка db существуют.

, тогда я запускаю mongod, и он жалуется, что не находит data / db

Я сделалчто-то не так?

Теперь я выполнил

sudo mkdir -p /data/db

, и когда я сделал "ls", я увидел данные dir и db dir.внутри db dir нет абсолютно ничего, и когда я сейчас запускаю mongod

Sun Oct 30 19:35:19 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
Sun Oct 30 19:35:19 dbexit: 
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close listening sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to flush diaglog...
Sun Oct 30 19:35:19 [initandlisten] shutdown: going to close sockets...
Sun Oct 30 19:35:19 [initandlisten] shutdown: waiting for fs preallocator...
Sun Oct 30 19:35:19 [initandlisten] shutdown: lock for final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: final commit...
Sun Oct 30 19:35:19 [initandlisten] shutdown: closing all files...
Sun Oct 30 19:35:19 [initandlisten] closeAllFiles() finished
Sun Oct 30 19:35:19 [initandlisten] shutdown: removing fs lock...
Sun Oct 30 19:35:19 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
Sun Oct 30 19:35:19 dbexit: really exiting now

EDIT, появляется сообщение об ошибке для

sudo chown mongod:mongod /data/db

chown: mongod: Invalid argument

Спасибо всем!

Ответы [ 19 ]

565 голосов
/ 31 октября 2011

Вы создали каталог не в том месте

/ data / db означает, что он находится непосредственно в корневом каталоге '/', тогда как вы создали 'data / db' (безведущий /), вероятно, находится просто в другом каталоге, например домашнем каталоге '/ root'.

Вам необходимо создать этот каталог как root

Либо вам нужно использовать sudo, например sudo mkdir -p /data/db

Или вам нужно сделать su -, чтобы стать суперпользователем, а затем создать каталог с mkdir -p /data/db


Примечание:

MongoDB также имеет опцию, в которой вы можете создать каталог данных в другом месте, но это, как правило, не очень хорошая идея, потому что это немного усложняет такие вещи, как восстановление БД, потому что вы всегда должны указывать путь db вручную.Я бы не рекомендовал это делать.


Редактировать:

полученное сообщение об ошибке "Невозможно создать / открыть файл блокировки: / data / db /mongod.lock Ошибка: 13 В доступе отказано ".Кажется, что созданный вами каталог не имеет правильных прав доступа и владельца - он должен быть доступен для записи пользователю, который запускает процесс MongoDB.

Чтобы просмотреть разрешения и владельца файла / data / db/ 'каталог, сделайте это: (именно так должны выглядеть разрешения и владелец)

$ ls -ld /data/db/
drwxr-xr-x 4 mongod mongod 4096 Oct 26 10:31 /data/db/

С левой стороны «drwxr-xr-x» показаны разрешения для пользователя, группы и других.«mongod mongod» показывает, кому принадлежит каталог и к какой группе принадлежит этот каталог.В этом случае оба называются «монгод».

Если ваш каталог '/ data / db' не имеет указанных выше разрешений и прав доступа, сделайте это :

Сначала проверьте, какой пользователь и группа у вашего пользователя mongo:

# grep mongo /etc/passwd
mongod:x:498:496:mongod:/var/lib/mongo:/bin/false

У вас должна быть запись для mongod в / etc / passwd, так как это демон.

sudo chmod 0755 /data/db
sudo chown -R 498:496 /data/db    # using the user-id , group-id

Вы также можете использовать имя пользователя и имя группы,следующим образом: (их можно найти в / etc / passwd и / etc / group)

sudo chown -R mongod:mongod /data/db 

, которые должны заставить его работать ..

В комментариях ниже некоторые люди использовали это:

sudo chown -R `id -u` /data/db
sudo chmod -R go+w /data/db

или

sudo chown -R $USER /data/db 
sudo chmod -R go+w /data/db

Недостатком является то, что $ USER - это учетная запись, которая имеет оболочку входа.В идеале демоны не должны иметь оболочку по соображениям безопасности, поэтому вы видите / bin / false в grep файла пароля выше.

Отметьте здесь, чтобы лучше понять значение разрешений для каталога:

http://www.perlfect.com/articles/chmod.shtml

Возможно также посмотрите одно из руководств, которые вы можете найти через Google: "UNIX для начинающих"

110 голосов
/ 11 апреля 2012

После получения той же ошибки, что и у Nik

chown: id -u: Неверный аргумент

Я обнаружил, что это, очевидно, произошло из-за использования неверного типа кавычек(должно было быть обратных цитат ) Форумы Ubuntu

Вместо этого я просто использовал

sudo chown $ USER / data / db

в качестве альтернативы, и теперь у mongod есть необходимые разрешения.

82 голосов
/ 17 апреля 2015

Это работает для меня, нашел в комментариях:

sudo chown -R $USER /data/db
65 голосов
/ 24 июля 2015

Создайте папку.

sudo mkdir -p /data/db/

Дайте себе разрешение на папку.

sudo chown `id -u` /data/db

Тогда вы сможете запустить mongod без sudo.Работает на OSX Yosemite

28 голосов
/ 28 апреля 2016

Чтобы исправить эту ошибку в OS X, я перезапустил и остановил службу: $ brew services restart mongodb $ brew services stop mongodb

Затем я запустил mongod --config /usr/local/etc/mongod.conf, и проблема исчезла.

Ошибка, по-видимому, возникла после обновления пакета homebrew mongodb.

20 голосов
/ 03 декабря 2014

Установка через brew на Mac, где YOUR_USER_NAME и staff - это группа

sudo mkdir -p /data/db
sudo chmod +x+r+w /data/db/
sudo touch /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db
sudo chmod +x+r+w /data/db/mongod.lock
sudo chown YOUR_USER_NAME:staff /data/db/mongod.lock
12 голосов
/ 13 апреля 2015

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

для использования вашей собственной базы данных (dev или просто другой):

./bin/mongod --dbpath ~/data/db
4 голосов
/ 24 декабря 2017

У меня была эта проблема с существующей установкой Mongodb.Я до сих пор не уверен, почему это произошло, но по какой-то причине процесс Mongod не смог найти файл mongod.config.Поскольку он не мог найти файл конфигурации, он пытался найти файлы DB в / data / db, папке, которая не существует.Однако файл конфигурации все еще был доступен, поэтому я убедился, что у процесса есть разрешения на файл конфигурации, и запустил процесс mongod с флагом --config следующим образом:

mongod --config /etc/mongod.conf

В самом файле конфигурации, который у меня былэтот параметр:

storage:
  dbPath: /var/lib/mongodb

И вот как процесс может снова найти настоящую папку БД.

4 голосов
/ 18 сентября 2012

Я решил эту проблему, создав папки / data / db с помощью моего оконного менеджера. Сначала я попытался сделать это через терминал, и для создания папки в корневом каталоге мне пришлось использовать sudo.

Я просто зашел в корневой каталог с помощью Finder и создал новую папку с помощью «Новая папка». Полностью работал для меня.

Примечание: я использую OSX.

4 голосов
/ 01 февраля 2018

Я сделал

brew install mongodb

на 2018-02-01, и это дало мне mongodb версию 3.6.2.

По запросу от orluke выше я попробовал просто

$ brew services restart mongodb

и все возникло в жизни.Мой mongoose.createConnection() звонок сделал то, что я хотел. GUI MongoDB Compass , версия сообщества, будет подключен.Я использовал Компас, чтобы посмотреть на коллекцию local.startup_log.В нем был один документ, в котором я только что запустил службу mongoDB, и у него было

cmdLine:Object
    config:"/usr/local/etc/mongod.conf"

, и действительно, был такой файл:

$ more /usr/local/etc/mongod.conf
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1

и был *Каталог 1022 * с множеством непонятных файлов.Так что, похоже, сейчас работает установка.

Я не уверен, если brew services restart устанавливает службу для запуска при входе в систему.Поэтому я сделал

brew services stop mongodb
brew services start mongodb

и надеялся, что запустит его снова после перезагрузки.И это действительно так.На самом деле, теперь, я думаю, что правильная вещь после начальной установки -

brew services start mongodb

, и это должно запустить службу и перезапустить ее после перезагрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...