IllegalOperation:试图在 ubuntu 20.04 中的只读目录 MongoDB 上创建锁定文件

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

我刚刚在我的远程 ubuntu 服务器上安装了 mongodb,以便将其与 angular 和 nodejs 项目一起使用。我使用 db.createUser 命令以及 mongo shell.

中的密码和角色创建了一个用户

然后,当我尝试使用以下命令启动具有访问控制的 mongodb 实例时:

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

显示错误:

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

首先,您是否检查过文件夹/var/lib/mongodb(ls -l /var/lib)的权限?

文件夹及其内容应分配给 mongod 用户。如果您的系统中安装了 ACL 权限 (getfacl),您还可以检查它。

如果权限似乎正确,请继续阅读以了解我如何在不同的环境中解决相同的错误。


在错误地重新安装 MongoDB 并且必须手动创建数据文件夹 /var/lib/mongo 之后,我在 CentOS 8 中发生了这种情况。在我的例子中,问题是必须更新 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