Незаконная операция: Попытка создать файл блокировки в каталоге MongoDB, доступном только для чтения, в ubuntu 20.04

#mongodb #access-control #ubuntu-20.04

Вопрос:

Я только что установил mongodb на свой удаленный сервер ubuntu для использования его с проектом angular и nodejs. Я создал пользователя с помощью команды db.CreateUser вместе с паролем и ролями в оболочке mongo.

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

 mongod --auth --port 27017 --dbpath /var/lib/mongodb
 

его отображение ошибки:

 IllegalOperation: Attempted to create a lock file on a read-only directory MongoDB
 

Ответ №1:

Прежде всего, вы проверили права доступа к папке /var/lib/mongodb ( ls -l /var/lib )?

Папка и ее содержимое должны быть назначены mongod пользователю. Вы также можете проверить разрешения ACL ( getfacl ), если они установлены в вашей системе.

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


Это произошло со мной в CentOS 8 после неправильной переустановки MongoDB, и папку с данными /var/lib/mongo пришлось создавать вручную. В моем случае проблема заключалась в том, что контекст безопасности SELinux (https://www.redhat.com/en/topics/linux/what-is-selinux) пришлось обновить, чтобы предоставить mongod доступ к папке.

Приведенная ниже команда решила мою проблему (обратите внимание, что путь к папке данных в моей конфигурации немного отличается, просто обновите его для вашего случая).:

 chcon -Rv --type=mongod_var_lib_t /var/lib/mongo
 

Это в основном говорит SELinux, что контекст, используемый MongoDB для доступа к файлам, должен быть связан с целевой папкой.

Вы можете получить более подробную информацию chcon здесь: https://www.man7.org/linux/man-pages/man1/chcon.1.html