MongoDB - socket的权限被拒绝:/tmp/mongodb-27017.sock

use*_*208 18 sockets file-permissions upstart 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
Run Code Online (Sandbox Code Playgroud)

当我通过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/
Run Code Online (Sandbox Code Playgroud)

我从哪里开始排除故障?

Dr *_*Joe 17

什么是/ tmp上的文件权限?他们有可能被改变了吗?

一个

# ls -ld /tmp
Run Code Online (Sandbox Code Playgroud)

会告诉你的.

如果你不确定尝试:

# chown root:root /tmp
# chmod 1777 /tmp
Run Code Online (Sandbox Code Playgroud)

这可能会解决它.


Adi*_*asi 17

尝试更改这样的所有者,

sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)


小智 5

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

sudo chown -R your-username /tmp/
Run Code Online (Sandbox Code Playgroud)

ps:your-username是你在mac os中的用户名,而不是root。如果你不知道你的用户名是什么,有一个命令:

whoami
Run Code Online (Sandbox Code Playgroud)