Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets MongoDB-套接字的权限被拒绝:/tmp/MongoDB-27017.sock_Sockets_Mongodb_File Permissions_Upstart - Fatal编程技术网

Sockets MongoDB-套接字的权限被拒绝:/tmp/MongoDB-27017.sock

Sockets MongoDB-套接字的权限被拒绝:/tmp/MongoDB-27017.sock,sockets,mongodb,file-permissions,upstart,Sockets,Mongodb,File Permissions,Upstart,我在Ubuntu 10.04 LTS上不干净地关闭了MongoDB。现在,当我以root用户身份登录并通过服务Mongodb start运行Mongodb时,我发现以下错误- Mon Dec 12 13:53:15 [initandlisten] ERROR: listen(): bind() failed errno:13 Permission denied for socket: /tmp/mongodb-27017.sock 当我通过root手动运行MongoDB时,它工作得很好 我可以

我在Ubuntu 10.04 LTS上不干净地关闭了MongoDB。现在,当我以root用户身份登录并通过服务Mongodb start运行Mongodb时,我发现以下错误-

Mon Dec 12 13:53:15 [initandlisten] ERROR: listen(): bind() failed errno:13 Permission denied for socket: /tmp/mongodb-27017.sock
当我通过root手动运行MongoDB时,它工作得很好

我可以确认没有/tmp/mongodb-27017.sock文件

root@devbox:~# ll /tmp/
total 16
drwxr-xr-x  4 root root 4096 2011-12-12 13:53 ./
drwxr-xr-x 25 root root 4096 2011-12-11 13:06 ../
drwxrwxrwt  2 root root 4096 2011-12-12 13:01 .ICE-unix/
drwxrwxrwt  2 root root 4096 2011-12-12 13:01 .X11-unix/

从哪里开始故障排除

确保Ubuntu mongo用户有权访问该文件。Mongo Ubuntu服务使用Ubuntu Mongo用户。要查找mongo用户名,请转到/var/lib/mongodb目录并显示权限:ls-l

在/tmp上的文件权限是什么?有没有可能他们已经改变了

A

我会告诉你的

如果您不确定,请尝试:

# chown root:root /tmp
# chmod 1777 /tmp

这可能会解决问题。

试着像这样更换所有者

sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

我也有同样的问题,因为我使用root运行mongodb,它将在CentOS 7.3上以
systemctl
开始失败

请使用mongodb的正确权限。

$sudo chown-R mongod:mongod\
/var/run/mongodb/mongod.pid\
/tmp/mongodb-27017.sock\
/var/lib/mongo/

如果我们有其他失败,比如
读取文件/路径/文件时出错:权限被拒绝
,也许我们可以通过SELinux来修复它。

$sudo chcon-v-t mongod\u var\u lib\u t/path/file


顺便说一句,我不建议使用777权限,这太危险了P

在3.0之前的版本中,默认情况下创建的套接字具有777个权限。 为mongod套接字设置权限的最正确方法是在mongodb.conf中设置值。例如:

sudo vim /usr/local/etc/mongodb.conf
并插入行:

filePermissions = 0777 
去吧


如果您尝试直接将权限更改为/tmp/mongodb-27017.sock,使用chownchmod可以将其设置为临时权限。并且在mongod服务重新启动或服务器重新启动后拥有旧权限。

我们使用mac并安装mongodb, 通常不需要mongodb.conf, 那么,试试这个:

sudo chown -R your-username /tmp/
你的用户名是你在mac os中的用户名,而不是root。如果你不知道你的用户名是什么,下面有一个命令:

whoami

root@devbox:~#ls-l/var/lib/mongodb total 4 drwxr-xr-x 2 mongodb mongodb 4096 2011-12-12 13:53 journal-rwxr-xr-x 1 mongodb mongodb 0 2011-12-12 13:53 mongod.lock
你说得对,在不干净的关机后,thins被搞砸了,mongodb用户无法再写/tmp了。太好了。很高兴我们找到了答案。你救了我一天。非常感谢。杰出的很高兴能帮忙。这解决了我的问题!感谢上帝,终于成功了!!谢谢这很奇怪,因为
/tmp
对所有三个都有
rwx
权限,但在我尝试您的示例之前,该操作是不允许的。
whoami