我尝试在 ubuntu 16.04 上启动 mongodb 4.0.4,但数据库拒绝了我的所有尝试。我检查了 mongodb 日志文件,发现名为 WiredTiger.turtle 的文件没有所需的权限。这里记录错误:
2018-11-26T15:14:32.438+0600 E STORAGE [initandlisten] WiredTiger error (13) [1543223672:438144][32673:0x7fee423e3a40], wiredtiger_open: __posix_open_file, 715: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1543223672:438144][32673:0x7fee423e3a40], wiredtiger_open: __posix_open_file, 715: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-11-26T15:14:32.438+0600 E STORAGE [initandlisten] WiredTiger error (13) [1543223672:438429][32673:0x7fee423e3a40], wiredtiger_open: __posix_open_file, 715: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1543223672:438429][32673:0x7fee423e3a40], wiredtiger_open: __posix_open_file, 715: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-11-26T15:14:32.438+0600 E STORAGE [initandlisten] WiredTiger error (13) [1543223672:438594][32673:0x7fee423e3a40], wiredtiger_open: __posix_open_file, 715: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1543223672:438594][32673:0x7fee423e3a40], wiredtiger_open: __posix_open_file, 715: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-11-26T15:14:32.438+0600 W STORAGE [initandlisten] Failed to start up WiredTiger under any compatibility version.
2018-11-26T15:14:32.438+0600 F STORAGE [initandlisten] Reason: 13: Permission denied
2018-11-26T15:14:32.438+0600 F - [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 646
2018-11-26T15:14:32.438+0600 F - [initandlisten]
***aborting after fassert() failure
我给了/var/lib/mongodb/中所有文件的所有权限。但是当我启动 mongodb WiredTiger.turtle 文件的权限时重置。只是为了检查我删除了该文件,但文件再次出现并且错误重复。
WiredTiger.turtle 权限也有同样的问题。乌班图18.04 我的问题是我用 sudo 启动了 mongod 服务。这在我的数据库目录中创建了具有 root:root 所有权的文件。当在没有 sudo 的情况下启动 mongod 服务时,我收到了权限被拒绝的错误。
解决方案是将 db 目录中所有文件的所有权更改回 mongodb:mongodb
$
sudo chown -R mongodb:mongodb /var/lib/mongodb/*
我解决了与您删除我的
/data/db
文件夹相同的问题,之后我重新创建了它并赋予了它写入和读取控制权。
我使用官方文档来安装我的版本,但我还使用
data
文件夹 完成了这些操作
希望有帮助。
在我的 Manjaro-Linux(类似 Arch-Linux)上,存在错误的用户:
/var/lib/mongodb/WiredTiger.turtle
上的组权限。
正在为我修复
sudo chown mongodb:daemon /var/lib/mongodb/WiredTiger.turtle
。
原因是,我试图限制wiredTigerCache的缓存使用。 每次我尝试此操作时,权限都会以错误的方式设置为
root:root
sudo mongod --wiredTigerCacheSizeGB 1
上面的答案只告诉了如何解决这个问题一次,但如果你不知道为什么会发生这种情况,它可能会一遍又一遍地发生。
让我补充一下为什么会出现这个问题以及如何避免它。
您很可能曾经直接运行过
sudo mongod
,因此root
用户尝试将某些内容写入数据库目录,从而损坏路径。您应该使用 monogodb
用户来启动该过程。
所以,请始终坚持以下两种方式开始
mongod
:
sudo service mongod start
:这将使用/etc/systemd/system/mongod.service
作为配置文件来启动mongod
。在此配置文件中,已指定用户 monogodb
。sudo -u mongodb mongod
:另一种方式是指定哪个用户直接启动这个进程。这为您提供了更大的灵活性,但可重复性较低。当您完成 MongoDB 配置后,建议将您的配置持久化到 /etc/mongod.conf
或 /etc/systemd/system/mongod.service
,并使用第一种方式启动流程。