#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