【问题标题】:IllegalOperation: Attempted to create a lock file on a read-only directory MongoDB in ubuntu 20.04IllegalOperation:尝试在 ubuntu 20.04 的只读目录 MongoDB 上创建锁定文件
【发布时间】: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

【问题讨论】:

    标签: mongodb access-control ubuntu-20.04


    【解决方案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
    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多