20

我在 Ubuntu 10.04 LTS 上不干净地关闭了 MongoDB。现在,当我以 root 身份登录并通过 service 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/

我从哪里开始故障排除?

4

6 回答 6

19

尝试像这样更改所有者,

sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
于 2016-08-09T06:25:41.380 回答
18

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

一种

# ls -ld /tmp

会告诉你。

如果您不确定,请尝试:

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

那可能会解决它。

于 2011-12-12T19:22:33.377 回答
3

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

sudo chown -R your-username /tmp/

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

whoami
于 2019-04-08T12:02:55.747 回答
0

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

于 2011-12-12T19:19:10.350 回答
0

我有同样的问题,因为我使用 root 运行 mongodb,它会systemctl在 CentOS 7.3 上启动失败。

请使用正确的 mongodb 权限。 $ sudo chown -R mongod:mongod \ /var/run/mongodb/mongod.pid \ /tmp/mongodb-27017.sock \ /var/lib/mongo/

如果我们有其他类似的失败Error reading file /path/file: Permission denied,也许我们可以通过SELinux修复它。 $ sudo chcon -v -t mongod_var_lib_t /path/file

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

于 2017-04-13T10:22:00.997 回答
0

在 3.0 之前的版本中,默认情况下使用 777 权限创建套接字。大多数对 mongod 套接字设置权限的最正确方法是在mongodb.conf中设置值。例如:

sudo vim /usr/local/etc/mongodb.conf

并插入行:

filePermissions = 0777 

给它。

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

于 2018-11-01T23:09:25.213 回答