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

MongoDB: exception в initAndListen: 20 Попытка создать файл блокировки в каталоге только для чтения:/data/db, завершение

Я создал /data/db в корневом каталоге и запустил ./mongod:

[initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] now exiting
[initandlisten] shutting down with code:100
4b9b3361

Ответ 1

Проблема в том, что созданный вами каталог /data/db принадлежит и доступен только для пользователя root, но вы используете mongod как самостоятельно. Существует несколько способов решить эту проблему, но в конечном итоге вы должны предоставить директорию, на которую ссылаются правильные разрешения. Если это для производства, я бы посоветовал вам проверить документы и тщательно обдумать это - вы, вероятно, захотите проявить особую осторожность.

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

> sudo chmod -R go+w /data/db

или это, что сделает каталог, принадлежащий вам:

> sudo chown -R $USER /data/db

Ответ 2

Вы можете использовать mongo как root, работает для меня:

$ sudo mongod

Ответ 3

У меня возникла одна и та же проблема, и после решения этой проблемы была решена эта проблема. Вы должны попробовать следующее решение.

sudo mkdir -p/data/db
 sudo chown -R 'имя пользователя'/data/db

Ответ 4

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

ls -dZ /data/db/
ls -dZ /var/lib/mongo/

и клонировать контекст с помощью:

chcon -R --reference=/var/lib/mongo /data/db

Ответ 5

На Mac мне нужно было сделать следующее:

sudo chown -R $USER /data/db
sudo chown -R $USER /tmp/

поскольку внутри /tmp был также файл, для которого Mongo также нуждался в доступе

Ответ 6

Я столкнулся с одной и той же проблемой, и я решил ее, и вот пошаговые инструкции:

Перед тем, как попробовать все остальное, просто перейдите в каталог mongodb, который содержит каталог bin для mongodb, и просто используйте команду в терминале:

sudo bin/mongod

запуск mongodb в качестве пользователя root, и вас могут попросить ввести пароль в качестве пользователя root. Если вы все еще не можете запустить mongodb, тогда сделайте следующее:

Во-первых, давайте посмотрим режим разрешения каталога данных mongodb, введя в Terminal:

ls -ld/data​​strong >

(p.s. или мы можем просто набрать "ls -l/", чтобы увидеть режимы разрешений для всех каталогов и файлов в корневом каталоге, включая каталог /data.)

И режим разрешения для пользователя root должен быть "rwx", а именно, пользователь root может читать, записывать и выполнять файлы. Чтобы это произошло, мы используем команду для изменения режима разрешения, набрав терминал:

chmod 755/data​​strong >

(то есть 755 - это отдельная восьмеричная запись аргумента настройки разрешения) Это устанавливает режимы разрешений/каталог данных в "rwxr-xr-x", а именно, пользователь root может читать, записывать и выполнять, тогда как пользователь группы и все остальные могут читать и исполнять.

Примечание: если вам отказано в выполнении этой операции, введите вместо этого:

sudo chmod 755/data​​strong >

чтобы установить разрешение в качестве пользователя root.

Затем, когда этот шаг будет выполнен, верните режимы разрешений, набрав еще раз: ls -ld/data​​strong >

и вывод должен выглядеть следующим образом:

drwxr-xr-x 3 корневое колесо 102 3 марта 17:00/данные

(p.s. вам не нужно беспокоиться о "d" в начале) и обратите внимание, что теперь выполняется настройка "rwxr-xr-x".

Затем мы все настроены, и теперь вы можете вернуться в каталог mongodb и ввести:

sudo bin/mongod

чтобы запустить mongodb.

Надеюсь, что это поможет.

Ответ 7

Хорошие решения, но мне интересно, почему никто не дает решение для Windows.

Если вы используете окна, вам просто нужно "Запуск от имени администратора" cmd.