我在 openSUSE Tumbleweed 上使用 MongoDB 3.6.2。今天当我尝试打开 mongo shell 时出现连接错误。当我使用
检查 mongodb.service 的状态时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
net: port: 27017 bindIp: 127.0.0.1,::1 ipv6: false
并确保 ipv6: false
因为我的机器上禁用了 ipv6。
- 确保您拥有数据路径的正确权限,在我的例子中是
/var/lib/mongodb
。
谢谢。
关于mongodb - 无法启动 mongodb 服务 :/data/db not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49910696/