从nodejs访问/tmp/mongodb-27017.sock的权限被拒绝

问题描述 投票:0回答:2

我有一个写入 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
2个回答
2
投票

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

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


0
投票

考虑编辑

/etc/mongd.conf
,这样您就可以保留默认的服务文件。

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  unixDomainSocket:
    enabled: true
    pathPrefix: /tmp
    filePermissions: 0666
© www.soinside.com 2019 - 2024. All rights reserved.