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

Posted

技术标签:

【中文标题】IllegalOperation:尝试在 ubuntu 20.04 的只读目录 MongoDB 上创建锁定文件【英文标题】:IllegalOperation: Attempted to create a lock file on a read-only directory MongoDB in ubuntu 20.04 【发布时间】:2021-10-30 19:10:54 【问题描述】:

我刚刚在我的远程 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

【问题讨论】:

【参考方案1】:

首先,你检查文件夹/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 访问该文件夹。

下面的命令解决了我的问题(注意我的配置中data文件夹的路径略有不同,根据你的情况更新一下)

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

它基本上告诉 SELinux MongoDB 用来访问文件的上下文应该与目标文件夹相关联。

您可以在此处获得有关chcon 的更多信息:https://www.man7.org/linux/man-pages/man1/chcon.1.html

【讨论】:

这个答案为我指出了正确的路径,/var/lib/mongodb,但有两个不同之处:1)我的用户是mongodb,而不是mongod; 2) 我使用以下行更改了组和用户所有权:sudo chown -R mongodb:mongodb /var/lib/mongodb

以上是关于IllegalOperation:尝试在 ubuntu 20.04 的只读目录 MongoDB 上创建锁定文件的主要内容,如果未能解决你的问题,请参考以下文章

markdown atualizacao-do-virtualbox-no-ubuntu.md

如何强制 VirtualBox GuestOS CPUID 匹配 HostOS?

G006-OS-LIN-UBUN-02 Ubuntu Server 22.04 安装

第一次尝试

MongoDB无法作为服务启动

Chromium Ninja 构建失败(非法指令输出)