MongoDB 3.0中的"无法取消链接套接字文件"错误

Kur*_*oZ7 61 mongodb ubuntu-13.04

我是MongoDB的新手.我正在尝试在Ubuntu 13.0 LTS上安装MongoDb 3.0,这是Windows 7主机上的VM.我已经成功安装了MongoDB(包等),但是当我执行命令时sudo service mongod start,我在"/var/log/mongodb/mongod.log"日志文件中收到以下错误.任何人都可以帮我理解这个错误.互联网上没有与此相关的内容.

2015-04-23T00:12:00.876-0400 I CONTROL*****SERVER RESTARTED*****2015-04-23T00:12:00.931-0400 E NETWORK [initandlisten]无法取消链接套接字文件/ tmp/mongodb -27017.soc k errno:1不允许操作2015-04-23T00:12:00.931-0400 I - [initandlisten]致命断言28578 2015-04-23T00:12:00.931-0400 I - [initandlisten]

Kur*_*oZ7 128

我自己修复了这个问题,删除了该mongodb-27017.sock文件.删除此文件后我运行了该服务,运行正常.但是,我仍然不确定问题的根本原因.ls - lat /tmp/mongodb-27017.sock现在命令的输出

srwx------ 1 mongodb nogroup 0 Apr 23 06:24 /tmp/mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)

  • 这暂时适用于我,但似乎文件会自动重新创建.有没有人找到这个问题的长期解决方案?在Ubuntu 14.04服务器版上. (2认同)

Bas*_*aut 27

除了KurioZ7提供的答案之外,您只需将.sock文件的权限设置为当前用户:

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

如果我想在没有sudo的情况下运行mongod,这对我有用.如果我像KurioZ7s一样删除文件,我将在下次重新启动机器时遇到同样的错误.


Gre*_*ler 13

使用此命令时会发生此问题

mongod
Run Code Online (Sandbox Code Playgroud)

在使用命令之前

sudo service mongod start
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请:

在文件上设置适当的权限:

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

要么

删除该文件

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

sudo service mongod start && mongod
Run Code Online (Sandbox Code Playgroud)


Raj*_*h K 12

更改 /tmp 目录中的所有权 mongodb-27017.sock 文件并再次启动 mongod。

cd /tmp

Run Code Online (Sandbox Code Playgroud)
sudo chown mongodb:mongodb mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)
sudo systemctl start mongod
Run Code Online (Sandbox Code Playgroud)


Spo*_*ins 9

最可能的原因是mongod进程在某个时刻由root用户启动.因此,套接字文件(/tmp/mongodb-27017.sock)由root用户拥有.mongod进程通常在其自己的专用用户下运行,并且该用户没有删除该文件的权限.

正如您已经发现的那样,解决方案是将其删除.然后mongodb能够使用正确的权限重新创建它.只要使用init脚本启动mongodb,或者在正确的用户帐户下,这应该在重新启动后保留.


Cod*_*eBy 8

$ sudo mongod
Run Code Online (Sandbox Code Playgroud)

它为我解决了问题