Сегодня я впервые использую свой новый Mac. Я следую руководству по началу работы на mongodb.org вплоть до шага, на котором создается каталог / data / db. Кстати, я использовал доморощенный маршрут.
Итак, я открываю терминал, и я думаю, что я нахожусь в том, что вы называете «Домашний каталог», потому что когда я делаю «ls», я вижу папки «Настольные приложения», «Фильмы», «Музыка», «Документы», «Библиотека».
Итак, я сделал
mkdir -p /data/db
во-первых, в разрешении отказано. Я продолжал пробовать разные вещи в течение получаса и, наконец,:
mkdir -p data/db
работал. и когда я "ls", каталог данных и вложенная в него папка db существуют.
тогда я запускаю Mongod, и он жалуется на то, что не найти данные / 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
РЕДАКТИРОВАТЬ Получение сообщения об ошибке для
sudo chown mongod:mongod /data/db
chown: mongod: Invalid argument
Спасибо всем!
grep mongo /etc/passwd /etc/group
. Если это не сработает, проверьте имя, проверив владельца каталогаls -ld /var/lib/mongo
. Или , чтобы увидеть UID / GID сделать это:ls -lnd /var/lib/mongo
. В моем случаеdrwxr-xr-x. 6 *487 480* 4096 Sep 20 2011 ...
- это значит использовать 487: 480 в качестве параметраОтветы:
Вы создали каталог не в том месте
/ data / db означает, что он находится непосредственно в корневом каталоге «/», тогда как вы создали «data / db» (без начального /), вероятно, просто в другом каталоге, например домашнем каталоге «/ root».
Вам нужно создать этот каталог как root
Либо вам нужно использовать
sudo
, напримерsudo mkdir -p /data/db
Или вам нужно сделать,
su -
чтобы стать суперпользователем, а затем создать каталог сmkdir -p /data/db
Замечания:
MongoDB также имеет опцию, в которой вы можете создать каталог данных в другом месте, но это, как правило, не очень хорошая идея, потому что это немного усложняет такие вещи, как восстановление БД, потому что вы всегда должны указывать путь db вручную. Я бы не рекомендовал это делать.
Редактировать:
полученное сообщение об ошибке «Невозможно создать / открыть файл блокировки: /data/db/mongod.lock errno: 13 Отказано в доступе» . Кажется, что созданный вами каталог не имеет правильных прав доступа и владельца - он должен быть доступен для записи пользователю, который запускает процесс MongoDB.
Чтобы просмотреть разрешения и владельца каталога / data / db /, сделайте следующее: (именно так должны выглядеть права доступа и владельца)
В левой части «drwxr-xr-x» показаны разрешения для пользователя, группы и других. «mongod mongod» показывает, кому принадлежит каталог и к какой группе принадлежит этот каталог. В этом случае оба называются «монгод».
Если ваш каталог / data / db не имеет указанных выше прав доступа и прав доступа, сделайте следующее :
Сначала проверьте, какой пользователь и группа у вашего пользователя mongo:
У вас должна быть запись для mongod в / etc / passwd, так как это демон.
Вы также можете использовать имя пользователя и имя группы следующим образом: (их можно найти в / etc / passwd и / etc / group)
это должно заставить его работать ..
В комментариях ниже некоторые люди использовали это:
или
Недостатком является то, что $ USER - это учетная запись, которая имеет оболочку входа. В идеале у демонов не должно быть оболочки, поэтому вы видите / bin / false в grep файла паролей выше.
Отметьте здесь, чтобы лучше понять значение разрешений для каталога:
http://www.perlfect.com/articles/chmod.shtml
Возможно также ознакомьтесь с одним из руководств, которые вы можете найти через Google: «UNIX для начинающих»
источник
ls -ld /data/
иls -ld /data/db/
.. вы увидите права доступа к каталогам, перечисленные слева, затем владельца, затем имя каталога. Вы должны убедиться, что каталоги доступны для записи по идентификатору пользователя, который запускает MongoDB.invalid arguement
sudo touch /data/db/mongod.lock
иsudo chmod 0777 /data/db/mongd.lock
. Она начала прямо.sudo chown -R `id -u` /data/db
илиsudo chown -R $USER /data/db
вместоsudo chown mongod:mongod /data/db
меня сделал трюкПосле получения той же ошибки, что и Ник
Я обнаружил, что это, по-видимому, произошло из-за использования неверного типа кавычек (это должны быть обратные кавычки ) Форумы Ubuntu
Вместо этого я просто использовал
в качестве альтернативы, и теперь у mongod есть необходимые разрешения.
источник
Это работает для меня, нашел в комментариях:
источник
Создайте папку.
Дайте себе разрешение на папку.
Тогда вы можете бежать
mongod
безsudo
. Работает на OSX Yosemiteисточник
bogdanmac:~ iliebogdanbarbulescu$ sudo chown `id -u` /data/db chown: /data/db: No such file or directory
Чтобы исправить эту ошибку в OS X, я перезапустил и остановил службу:
$ brew services restart mongodb $ brew services stop mongodb
Потом я побежал
mongod --config /usr/local/etc/mongod.conf
, и проблема исчезла.Похоже, ошибка возникла после обновления пакета homebrew mongodb.
источник
Установка через brew на Mac, где YOUR_USER_NAME и сотрудники являются группой
источник
/etc/passwd
имя пользователя - группа, вероятно, будет идентична. Обычно это либоmongo
илиmongodb
.Если вы запускаете mongo без аргументов, это предполагает, что вы работаете на производственном компьютере, поэтому он использует местоположения по умолчанию.
для использования вашей собственной базы данных (dev или просто другая):
источник
У меня была эта проблема с существующей установкой Mongodb. Я до сих пор не уверен, почему это произошло, но по какой-то причине процесс Mongod не смог найти файл mongod.config. Поскольку он не мог найти файл конфигурации, он пытался найти файлы DB в / data / db, папке, которая не существует. Однако файл конфигурации все еще был доступен, поэтому я убедился, что у процесса есть разрешения на файл конфигурации, и запустил процесс mongod с флагом --config следующим образом:
В самом файле конфигурации у меня была эта настройка:
И так процесс может снова найти настоящую папку БД.
источник
я сделал
на 2018-02-01, и это дало мне
mongodb
версию 3.6.2.По подсказке от orluke выше я попробовал просто
и все возникло в жизни. Мой
mongoose.createConnection()
звонок сделал то, что я хотел. GUI MongoDB Compass , версия сообщества, будет подключаться. Я использовал Компас, чтобы посмотреть наlocal.startup_log
коллекцию. В нем был один документ, в котором я только что запустил службу mongoDB, и это былои действительно был такой файл:
и там был
/usr/local/var/mongodb
каталог с множеством непонятных файлов. Так что, похоже, сейчас работает установка.Я не уверен,
brew services restart
устанавливает ли сервис для запуска при входе в систему. Так я и сделали надеялся, что запустит его снова после перезагрузки. И это действительно так. На самом деле, теперь, я думаю, что правильная вещь после начальной установки
и это должно запустить службу и перезапустить ее после перезагрузки.
источник
Ваша команда создаст структуру каталогов в текущей папке, а не в корневой директории вашего компьютера (что и является отсутствующим
/
).Первая команда была правильной, но поскольку вы пытаетесь создать папку
/
, которая является защищенным каталогом, вам необходимо добавить к ней префиксsudo
, что сокращенно означает «superuser do». Затем вам будет предложено ввести пароль.Таким образом, полная команда будет:
источник
Вам нужно создать / data / db ... это каталог с именем / data / в вашем корне (т.е. / ) и подпапка в нем с именем / db / ...
Вы получаете ошибки разрешения, потому что вам нужно использовать sudo для создания директории в корневом каталоге в MacOS, sudo позволяет запускать команды от имени администратора.
Итак, запустите это вместо ...
Это запросит у вас пароль, это тот же пароль, который вы используете для изменения настроек системы (это маленькое диалоговое окно, которое открывается, когда вы пытаетесь изменить настройки в Системных настройках для примера), и, вероятно, то же самое, что вы используете для входа в систему.
источник
Вы пытаетесь создать каталог, к которому у вас нет прав root.
Для тестирования mongodb я просто использую каталог из моего пользовательского каталога, например:
Это сделает базу данных Монго в temp / из вашего текущего рабочего каталога.
источник
Я решил эту проблему, создав папки / data / db с помощью моего оконного менеджера. Сначала я попытался сделать это через терминал, и для создания папки в корневом каталоге мне пришлось использовать sudo.
Я просто пошел в корневой каталог с помощью Finder и создал новую папку с помощью «Новая папка». Полностью работал для меня.
Примечание: я использую OSX.
источник
Просто быстрое примечание:
Если вы попытались запустить 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.
источник
Создать каталог в Root
Теперь смените владельца
Тебе хорошо идти!
вместо использования
sudo mongod
вам не нужно вводить все пароли, но для реального проекта, который вы должны использоватьsudo mongod
, не давайте разрешения обычному пользователю!источник
Я продолжал получать следующую ошибку, когда я пытался запустить mongodb.
Я использовал следующую команду:
Исправление для меня было то, что мне не нужен знак "=", и это стало причиной ошибки. Так я и сделал
Просто хотел выбросить это там, потому что ошибка никоим образом не указывает, что это проблема. Я почти удалил содержимое каталога ~ / mongo-data, чтобы посмотреть, помогло ли это. Рад, что вспомнил, что в некоторых случаях знак "=" не используется.
источник
До этой даты я также думал, что нам нужно создать эту папку / data / db для запуска команды mongod.
Но недавно я попытался запустить mongod с сервисной командой, и она работала для меня, и не было необходимости создавать каталог / data / db.
Для проверки состояния mongod вы можете запустить следующую команду.
источник
Это решение решает мою проблему
Сделать каталог как
sudo mkdir -p / data / db
Это сделает каталог с именем db, а затем попытаться начать с помощью команд
судо монгод
Если вы получаете другую ошибку или проблему с запуском mongod, вы можете найти проблему как
и найдите работающий порт mongod и убейте процесс. Другой способ - сделать специальный порт при запуске mongod как
источник
Введите «id» на терминале, чтобы увидеть доступные идентификаторы пользователя, которые вы можете дать, затем просто введите
"sudo chown -R idname / data / db"
Это сработало для меня! Надеюсь, это решит вашу проблему.
источник
В более текущих версиях MongoDB, у меня есть 3.2.10, он хранится по умолчанию в
/var/lib/mongodb
источник
mongod --dbpath /var/lib/mongodb
помогает в этих условияхПосле (повторной) установки пакета инструментов я получил похожую ошибку на устройстве Windows 10;
Решение Аналогично тому, как описано для систем Linux: достаточно просто создать папку для запуска
mongod.exe
(сервер mongoDB).Думаю, я мог бы оставить это для людей, которые заканчивают здесь с теми же условиями поиска на устройстве Windows.
источник
Я просто хотел указать здесь, что если вы попробуете это, и вы столкнетесь
mkdir: /data/db: Read-only file system
, пожалуйста, посмотрите этот комментарий, который мне помог: https://stackoverflow.com/a/58895373 .Таким образом, если кто-то ответит на этот вопрос и сделает Control F для «только для чтения», он увидит это
источник
Есть действительно тупой способ создать эту проблему, которую я впервые применил:
1) на некоторое время оставьте установку на Монго 2) вернитесь и сервер не работает 3) попытайтесь запустить его, но на этот раз не используйте sudo 4) Монго не может найти данные / db /, потому что теперь он ищет пользователь home dir вместо su home dir
Да, это действительно глупо, но если это было какое-то время, так как вы были в системе, это может сбить вас с толку.
Краткий ответ: убедитесь, что вы запускаете Монго с тем же подразумеваемым домашним каталогом
источник