【发布时间】: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
【问题讨论】: