无法启动 mongodb 服务:找不到 /data/db



我在openSUSE Tumbleweed上使用MongoDB 3.6.2。今天当我尝试打开 mongo 外壳时,出现连接错误。当我使用

sudo systemctl status mongodb

它显示

Active: failed

没有太多有用的信息。然后我检查了

sudo mongod --repair

我发现以下错误:

STORAGE  [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating

所以我去检查我的/etc/mongodb.conf 文件,存储部分如下所示:

# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
#  engine: mmapv1
#  mmapv1:
#  wiredTiger: true

网络部分如下所示:

net:
port: 27017
bindIp: 127.0.0.1,::1
ipv6: true

该文件的其他部分不太可能导致此错误,因此我省略了它们。

我认为我的机器上没有打开ipv6,但这也不会导致错误,因为我试图设置

ipv6: false

它仍然没有奏效。

问题是,我通常将mongodb作为服务,并使其在启动时自动启动

sudo systemctl start mongodb
sudo systemctl enable mongodb

直到今天,这仍然很好。但是,当我手动运行时

sudo mongod --dbpath /var/lib/mongodb --port 27017

它工作正常。所以看起来mongodb仍然无法识别新的dbpath/var/lib/mongodb。我确实跑了

sudo mongod --config /etc/mongodb.conf

但看起来这没有帮助。

请指教。我是否必须每次都手动指定 --dbpath?我可以继续使用 .conf 文件将 mongodb 作为服务运行吗?

提前谢谢。

已求解:

事实证明,ipv6设置实际上很重要。我将/etc/mongodb.conf文件更改为:

# What type of connections to allow.
net:
port: 27017
bindIp: 127.0.0.1
ipv6: false

然后

sudo mongod --config /etc/mongodb.conf

完成此操作后,我尝试再次启动服务,但出现相同的错误。我去检查位于/var/log/mongodb/mongod.log的日志,发现以下错误:

2018-04-18T21:02:36.561-0400 E STORAGE  [initandlisten] WiredTiger error (13) [1524099756:561216][4061:0x7f107fa1b9c0], file:WiredTiger.wt, connection: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-04-18T21:02:36.561-0400 E -        [initandlisten] Assertion: 28595:13: Permission denied src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 413
2018-04-18T21:02:36.562-0400 I STORAGE  [initandlisten] exception in initAndListen: Location28595: 13: Permission denied, terminating

所以我这样做了:

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

然后我开始使用服务

sudo systemctl start mongodb

它开始正确!

所以解决方案是:

  1. 从中删除,::1

    net:
    port: 27017
    bindIp: 127.0.0.1,::1
    ipv6: false
    

并确保ipv6: false,因为我的机器上禁用了IPv6。

  1. 确保您对数据路径具有正确的权限,在我的情况下是/var/lib/mongodb.

谢谢。

最新更新