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?