MongoDB.service 失败,结果退出代码

问题描述 投票:0回答:14

我无法使用命令“sudo systemctl start mongod”启动mongoDB。

我收到以下消息:

● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2020-02-19 22:39:00 CET; 2s ago
     Docs: https://docs.mongodb.org/manual
  Process: 29368 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=14)
 Main PID: 29368 (code=exited, status=14)

Feb 19 22:39:00 pop-os systemd[1]: Started MongoDB Database Server.
Feb 19 22:39:00 pop-os systemd[1]: mongod.service: Main process exited, code=exited, status=14/n/a
Feb 19 22:39:00 pop-os systemd[1]: mongod.service: Failed with result 'exit-code'.

我已经重新安装了 mongodb 并且遇到了同样的问题。 我不知道错误从何而来,如果您能帮助我。 谢谢你。

mongodb bdd
14个回答
195
投票

只需执行这两个命令即可临时解决:

sudo rm -rf /tmp/mongodb-27017.sock
sudo service mongod start

详情:

这应该是由于.sock文件中的用户权限问题,您可能需要将所有者更改为monogdb用户。

sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

更多详情请访问安装文档


36
投票

我在 Manjaro 中遇到了同样的问题,这些命令解决了它:

chown -R mongodb:mongodb /var/lib/mongodb
chown mongodb:mongodb /tmp/mongodb-27017.sock

27
投票

这对我有用,我没有重新安装 MongoDB。我是手动创建的

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

27
投票

我遇到了同样的问题,所以我尝试更改权限和我在网上找到的一些其他命令,这些命令搞乱了我的 MongoDB 安装。以下是我从网上尝试并搞砸了安装的命令:

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

$ sudo systemctl status mongod

$ sudo systemctl start mongodb

$ sudo systemctl unmask mongodb

之后,我使用以下命令重新安装了mongodb,解决了问题:

$ sudo service mongod stop

$ sudo apt-get purge mongodb-org*

$ sudo rm -r /var/log/mongodb

$ sudo rm -r /var/lib/mongodb

$ sudo apt-get install -y mongodb-org

现在启动 mongodb 并使用以下命令检查状态:

$ sudo systemctl start mongod

$ sudo systemctl status mongod


13
投票

这两个命令为我解决了问题(Linux Mint 20.2)。

sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

7
投票

这个错误发生在我身上是因为 .sock 文件的所有权 只需尝试这两个命令

chown -R mongodb:mongodb /var/lib/mongodb
chown mongodb:mongodb /tmp/mongodb-27017.sock

现在重新启动 mongo 服务器-

sudo systemctl start mongod

现在您可以使用以下命令检查 mongo 服务器的状态 -

sudo systemctl status mongod

6
投票

这对您有用,并且无需重新安装 MongoDB。

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

启动

mongod
服务

sudo service mongod start 

mongod.service
将会是
active

sudo service mongod status

4
投票

对我来说,这有效

sudo systemctl stop mongod
sudo mongod --repair --dbpath /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
sudo systemctl start mongod

2
投票

奇怪的是,这里的其他答案都没有提到查看日志文件。这应该始终是您要做的第一件事。在 Ubuntu 上,它位于

/var/log/mongodb/mongod.log

就我而言,我收到如下消息:

{
   "t":{
      "$date":"2022-12-03T17:19:25.117+00:00"
   },
   "s":"F",
   "c":"CONTROL",
   "id":20574,
   "ctx":"main",
   "msg":"Error during global initialization",
   "attr":{
      "error":{
         "code":140,
         "codeName":"InvalidSSLConfiguration",
         "errmsg":"ssl client initialization problem for certificate: /etc/ssl/mongodb.pem :: caused by :: The provided SSL certificate is expired or not yet valid. notBefore 2022-08-22T21:15:57.000+00:00, notAfter 2022-11-20T21:15:56.000+00:00"
      }
   }
}

因此,解决方案是更新已过期的 SSL 证书。

如果您使用 Let's Encrypt,这里有一个

--post-hook
脚本可以自动执行此操作(将 example.com 更改为您的域):

#!/bin/bash
cat /etc/letsencrypt/live/example.com/{fullchain.pem,privkey.pem} | tee /etc/ssl/mongodb.pem 
chown mongodb:mongodb /etc/ssl/mongodb.pem
chmod 600 /etc/ssl/mongodb.pem

如果证书已存在,您也可以在

[renewalparams]
/etc/letsencrypt/renewal/example.com.conf

下添加此证书
post_hook = /root/path/to/script.sh

或者你可以只做一行而不是链接到外部脚本:

post_hook = cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem | sudo tee /etc/ssl/mongodb.pem && chown mongodb:mongodb /etc/ssl/mongodb.pem && chmod 600 /etc/ssl/mongodb.pem

0
投票

这 3 个步骤解决了我的问题:

sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

0
投票

sudo mongod --dbpath /var/lib/mongodb/ --journal


0
投票

我在 AWS EC2 ubuntu 服务器上遇到了同样的问题。 我最终发现这是由于磁盘上缺乏可用空间造成的。 我运行

df -h
来确定哪个分区已满,并将其与 AWS 控制台上的卷进行比较(本指南有帮助)。

我增加了 AWS 卷上的可用存储,运行

sudo reboot now
,问题得到解决


0
投票

使用此命令:

sudo chown -R mongodb:mongodb /var/lib//mongodb

然后这个命令:

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

0
投票

我最初在使用 (mongosh) 启动 Mongo Shell 时遇到以下错误

当前 Mongosh 日志 ID:65073254880d2fbc107e14e8 连接到: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.10.6 MongoNetworkError:连接ECONNREFUSED 127.0.0.1:27017

然后我使用了该线程中最高值共享的代码,它修复了连接:

sudo rm -rf /tmp/mongodb-27017.sock sudo 服务 mongod 启动

© www.soinside.com 2019 - 2024. All rights reserved.