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 ]

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

Вам необходимо создать / data / db ... это каталог с именем / data / в вашем корне (то есть / ) и подпапка там называется / db / ...

Вы получаете ошибки разрешения, потому что вам нужно использовать sudo для создания директории в вашем корневом каталоге в MacOS, sudo позволяет запускать команды от имени администратора.

Итак, запустите это вместо ...

$ sudo mkdir -p /data/db

Это запросит у вас пароль, это тот же пароль, который вы используете для изменения настроек системы (это маленькое диалоговое окно, которое открывается, когда вы пытаетесь изменить настройки в Системных настройках для ecample), и, вероятно, то же самое, что вы используете для входа в систему.

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

Ваша команда создаст структуру каталогов в текущей папке, а не корневой каталог вашего компьютера (что и есть отсутствующий /).

Первая команда была правильной, но потому что выпытаетесь создать папку в /, которая является защищенным каталогом, вам нужно добавить к ней префикс sudo, что означает сокращение от «superuser do».Затем вам будет предложено ввести пароль.

Таким образом, полная команда будет:

$ sudo mkdir -p /data/db
2 голосов
/ 31 октября 2011

Вы пытаетесь создать каталог, к которому у вас нет root-доступа.

Для тестирования mongodb я просто использую каталог из своего пользовательского каталога, например:

cd
mkdir -p temp/
mongod --dbpath .

Это сделает базу данных Монго в temp / из вашего текущего рабочего каталога

2 голосов
/ 07 июля 2014

Просто краткое замечание:

Если вы попытались запустить mongod без изменения прав доступа, у вас, скорее всего, будет файл mongod.lock (и некоторые другие файлы) в каталоге / data / db.Даже после того, как вы измените разрешения для каталога / data / db для предоставления доступа к вашему $ USER, вы по-прежнему будете получать сообщение «Невозможно создать / открыть файл блокировки: /data/db/mongod.lock errno: 13 Разрешение отклонено" ошибка.Запустите ls -al / data / db, и вы, вероятно, увидите, что разрешения для отдельных файлов по-прежнему установлены для пользователя root, а не для вашего $ USER.Вы должны удалить файл mongod.lock и другие.Затем, когда вы снова запустите mongod, все должно работать, и вы можете проверить, что права доступа к файлам соответствуют разрешениям каталога, снова запустив ls -al.

1 голос
/ 26 сентября 2018

До этой даты я также думал, что нам нужно создать эту папку / data / db для запуска команды mongod.

Но недавно я попытался запустить mongod с сервисной командой, и у меня это сработало, и не было необходимости создавать каталог / data / db.

service mongod start

Как проверить состояние mongodВы можете выполнить следующую команду.

service mongod status
0 голосов
/ 03 февраля 2019

Это решение решает мою проблему

  1. Сделать каталог как

    sudo mkdir -p / data / db

  2. Это сделает каталог с именем db, а затем попытаться запустить с помощью команд

    sudo mongod

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

Не удалось настроить прослушиватель: SocketException: адрес уже используется Если вы обнаружите, что другая ошибка, чем вы должны убить запущенный процесс Mongod, набрав в терминал как

ps ax | grep mongod
sudo kill ps_number

и найдите работающий порт mongod и убейте процесс. Другой способ - создать специальный порт при запуске mongod как

.
sudo mongod --port 27018
0 голосов
/ 11 января 2019

Я продолжал получать следующую ошибку при попытке запустить mongodb.

"shutting down with code:100" 

Я использовал следующую команду:

./mongod --dbpath=~/mongo-data

Исправление для меня состояло в том, что мне не нужен знак "=", и это вызывало ошибку. Так я и сделал

./mongod --dbpath ~/mongo-data

Просто хотел выкинуть это, потому что ошибка никоим образом не указывает на то, что это проблема. Я почти удалил содержимое каталога ~ / mongo-data, чтобы посмотреть, помогло ли это. Рад, что вспомнил, что в некоторых случаях знак "=" не используется.

0 голосов
/ 07 марта 2017

В более текущих версиях MongoDB, у меня есть 3.2.10, он сохраняется по умолчанию в

/var/lib/mongodb

0 голосов
/ 30 сентября 2015

Введите «id» на терминале, чтобы увидеть доступные идентификаторы пользователей, которые вы можете дать, Затем просто наберите

"sudo chown -R idname / data / db"

Это сработало для меня! Надеюсь, что это решит вашу проблему.

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