【问题标题】:MongoDB - Permission denied for socket: /tmp/mongodb-27017.sockMongoDB - 套接字的权限被拒绝:/tmp/mongodb-27017.sock
【发布时间】:2012-01-18 17:54:26
【问题描述】:

我在 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/

从哪里开始进行故障排除?

【问题讨论】:

    标签: sockets mongodb file-permissions upstart


    【解决方案1】:

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

    sudo chown -R your-username /tmp/
    

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

    whoami
    

    【讨论】:

      【解决方案2】:

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

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

      并插入行:

      filePermissions = 0777 
      

      给它。

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

      【讨论】:

        【解决方案3】:

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

        请使用正确的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

        【讨论】:

          【解决方案4】:

          尝试像这样更改所有者,

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

          【讨论】:

          • 这解决了我的问题!谢谢
          • 感谢上帝,终于成功了!!谢谢!这很奇怪,因为 /tmp 对所有三个都拥有 rwx 权限,但在我尝试了你的示例之前,该操作是不允许的。
          • 在使用基于 Debian 的系统时,用户似乎是 mongodb,但在使用 Centos 系统时,用户 id 是 mongod(注意用户名中没有“b”)。在外面小心点!
          • 这解决了我的问题 |谢谢
          【解决方案5】:

          /tmp 上的文件权限是什么?有没有可能被改了?

          一个

          # ls -ld /tmp
          

          会告诉你的。

          如果您不确定,请尝试:

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

          这可能会解决它。

          【讨论】:

          • 你是对的,在不干净的关机之后,thins 变得一团糟,MongoDb 用户不再可写 /tmp。
          • 太棒了。很高兴我们为您找到了答案。
          • 你拯救了我的一天。谢谢!
          • 优秀。很高兴能提供帮助。
          【解决方案6】:

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

          【讨论】:

          • 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
          猜你喜欢
          • 2021-03-20
          • 2016-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多