【问题标题】:Permission denied accessing /tmp/mongodb-27017.sock from nodejs权限被拒绝从 nodejs 访问 /tmp/mongodb-27017.sock
【发布时间】:2021-03-20 21:17:35
【问题描述】:

我有一个写入 mongodb 套接字的节点应用程序。但是在启动节点应用程序时出现错误:

MongoServerSelectionError: connect EACCES /tmp/mongodb-27017.sock\n

节点应用程序在用户 X 下运行,而 /tmp/mongodb-27017.sock 文件仅对用户 mongodb 可写。现在更改 /tmp/mongodb-27017.sock 的权限没有多大意义,因为 mongod 似乎每次重新启动时都会重新创建该套接字文件,并且它会重置权限。我不想在 mongodb 用户下运行我的节点应用程序。让节点写入mongodb套接字的正常方式是什么?

一些细节:

我将 mongod 作为服务运行。我启动服务:

sudo systemctl start mongod.service

服务启动时,mongod 会创建/tmp/mongodb-27017.sock 文件。该文件的权限是:

srwx------ 1 mongodb mongodb 0 dec  9 13:00 /tmp/mongodb-27017.sock

我的/tmp目录的权限是:

drwxrwxrwt  28 root root       4096 dec  9 14:10 tmp

我用来连接mongo的connectionUri是:

mongodb://%2Ftmp%2Fmongodb-27017.sock

我正在运行 mongodb v4.0.21

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    mongod 采用--filePermissions 0666 选项将套接字文件权限设置为所需的值。

    很可能有一个可以在配置文件中设置的等效选项。

    【讨论】:

    • 啊,效果很好。我想我需要练习我的搜索技巧。我在网上找到的所有解决方案都不适用于我,但没有提到这个选项。
    • 由于 mongod 参数等参考页面的大小,实际上这些信息通常没有被搜索引擎正确索引/找到。
    猜你喜欢
    • 2012-01-18
    • 2016-02-03
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多