我无法使用命令“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 并且遇到了同样的问题。 我不知道错误从何而来,如果您能帮助我。 谢谢你。
只需执行这两个命令即可临时解决:
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
更多详情请访问安装文档
我在 Manjaro 中遇到了同样的问题,这些命令解决了它:
chown -R mongodb:mongodb /var/lib/mongodb
chown mongodb:mongodb /tmp/mongodb-27017.sock
这对我有用,我没有重新安装 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
我遇到了同样的问题,所以我尝试更改权限和我在网上找到的一些其他命令,这些命令搞乱了我的 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
这两个命令为我解决了问题(Linux Mint 20.2)。
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
这个错误发生在我身上是因为 .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
这对您有用,并且无需重新安装 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
对我来说,这有效
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
奇怪的是,这里的其他答案都没有提到查看日志文件。这应该始终是您要做的第一件事。在 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
这 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
sudo mongod --dbpath /var/lib/mongodb/ --journal
我在 AWS EC2 ubuntu 服务器上遇到了同样的问题。 我最终发现这是由于磁盘上缺乏可用空间造成的。 我运行
df -h
来确定哪个分区已满,并将其与 AWS 控制台上的卷进行比较(本指南有帮助)。
我增加了 AWS 卷上的可用存储,运行
sudo reboot now
,问题得到解决
使用此命令:
sudo chown -R mongodb:mongodb /var/lib//mongodb
然后这个命令:
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock
我最初在使用 (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 启动