MongoDB加载但出现故障,返回状态=14。

所以我正在尝试在Ubuntu 16.04上设置Mongodb,但是遇到了问题。

运行时:

sudo systemctl status mongodb

我得到以下内容:
 mongodb.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2016-09-10 14:02:22 CEST; 14s ago
     Docs: https://docs.mongodb.org/manual
  Process: 8724 ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf (code=exited, status=14)
 Main PID: 8724 (code=exited, status=14)

根据Mongo文档,status=14表示:
"Returned by MongoDB applications which encounter an unrecoverable error, an uncaught exception or uncaught signal. The system exits without performing a clean shut down."

这并没有真正指引我朝任何特定的方向。

我的/etc/systemd/system/mongodb.service文件看起来是这样的:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

有什么想法,可能是什么原因引起的呢?
谢谢你。

MongoDB日志(通常在/var/log目录下)记录了什么内容? - Adam C
嗨,亚当,抱歉没有及时回复你。我通过重新安装Mongo解决了问题。还是谢谢你。 - user2915962
10个回答

经过一番搜索,我发现问题出在/var/lib/mongodb和/tmp/mongodb-27017.lock的权限设置上。你需要将所有者更改为mongodb用户。
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

那么

sudo service mongod restart

21+1 对于找到未记录的 chown mongodb:mongodb /tmp/mongodb-27017.sock 操作表示赞赏... - Romeo Sierra
2+1 对于 chown -R mongodb:mongodb /var/lib/mongodb - luongnv89
3我昨天就因为这个而输了。你应该有很好的谷歌搜索技巧 :) - Giorgi Gvimradze
你好我已按照上述更改了权限,但仍无法创建一个以错误14退出的副本集。有什么想法吗?这是我正在使用的链接 https://www.mongodb.com/blog/post/mongodb-change-streams-with-python - Dhruv Marwha
1这解决了我的问题。非常感谢 :) - Dinesh Suthar
这个回答真的救了我的一天。谢谢。 - Ken Bekov
每次我想启动MongoDB都得这么做...真烦,为什么啊? - Michael Paccione
这个完美地运作了! - Rohit Parte
它救了我的一天 - Kasun Hasanga
我不得不使用你的解决方案。谢谢。我报告说,我自己尝试以root身份从命令行运行服务,如下所示:/usr/bin/mongod --config /etc/mongod.conf,导致了问题的产生。就像你提到的那样,文件权限被搞乱并设置为root。 - Nicola Mingotti
chown -R mongodb:mongodb /var/lib/mongodb 对我来说起到了作用,你是个英雄 - llermaly
在我谷歌了两天之后,这对我起作用了。 - MD Jahid Hasan
问题已经解决了,谢谢。 - yussan
非常感谢,问题已解决。 - Neeraj Kumar
你是救世主! - undefined
你救了我!!! - undefined
刚刚为我执行了以下操作:sudo chown mongodb:mongodb /tmp/mongodb-27017.sock sudo systemctl restart mongod sudo systemctl status mongod状态在此之后又恢复良好了。 - undefined

通过以下步骤解决了我的错误:

  1. 进入 TMP 目录: cd /tmp
  2. 检查是否有 mongodb sock 文件: ls *.sock
  3. 更改用户组权限: chown mongodb:mongodb <YOUR_SOCK>
  4. 启动 MongoDB: sudo service mongod start
  5. 检查 MongoDB 状态: sudo service mongod status

在tmp文件夹中,我没有任何.sock文件。可能会出什么问题呢? - Giorgi Gvimradze
当我尝试去做的时候,它显示操作不允许,有什么想法吗? - Yanis

删除mongod sock文件解决了我的问题 sudo rm -rf /tmp/mongodb-27017.sock 然后重新启动 sudo systemctl start mongod

检查两个提到的目录 如果它们不存在,请使用以下命令:
sudo mkdir /var/lib/mongodb
sudo mkdir /var/log/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb

使用以下命令清除套接字:
chown mongodb:mongodb /tmp/mongodb-27017.sock

3. 重新启动并检查服务的状态:
sudo service mongod restart

对于您在第2步中宝贵的回答,只需要进行一个小的更正,我们需要在chown之前添加sudo - Pranjal Gupta

我试过这个,它有效:

sudo nano /etc/mongod.conf

注释掉"bind ip"这一行。
sudo mongod --auth --port 27017 --dbpath /data/db

然后我跑了
sudo service mongod restart

只针对初学者,如果你尝试以下操作并遇到错误:
  sudo chown -R mongodb:mongodb /var/lib/mongodb
  sudo chown mongodb:mongodb /tmp/mongodb-27017.sock 
  sudo service mongod restart

然后尝试检查状态。
  sudo systemctl status mongod

它将显示活动..

我也曾经遇到过状态14,但那不是因为我的.lock文件。
看起来你的dbPath(在我的情况下是/data/mongodb)中的所有内容都应该属于mongodb。在我的情况下,两个文件和journal文件夹中的文件都属于root,可能是因为我使用sudo而不是mongodb用户(如mongod.service中配置的)运行了mongod命令。
sudo chown mongodb:mongodb /data/mongodb/ -R

为了找到我的问题,将/etc/mongod.conf中的详细程度设置为5是有帮助的。
systemLog:
  verbosity: 5

在使用sudo systemctl start mongod之后,运行tail /var/log/mongodb/mongodb.log -n 100

为了使其工作,mongod.conf需要被mongod加载。mongod.service通过--config参数实现。

确保在你的mongodb重新工作后,删除高度冗长的日志文件,因为该日志文件可能会变得非常大。


只有在全新安装的情况下: 如果/var/lib/mongodb损坏了,删除它并重新安装mongodb即可解决。

对于已存在数据的数据库,请尝试以下方法:

mongod --repair --dbpath /var/lib/mongodb

在我的情况下,这是因为一个修复操作没有完成,所以我不得不运行mongod --repair --dbpath /var/lib/mongodb

这个错误发生是因为我的磁盘空间满了。 删除了一些未使用的文件后问题解决了。