由于WiredTiger.turtle权限,Mongodb无法启动

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

我尝试在 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 文件的权限时重置。只是为了检查我删除了该文件,但文件再次出现并且错误重复。

mongodb ubuntu-16.04 wiredtiger mongodb4.0
4个回答
39
投票

WiredTiger.turtle 权限也有同样的问题。乌班图18.04 我的问题是我用 sudo 启动了 mongod 服务。这在我的数据库目录中创建了具有 root:root 所有权的文件。当在没有 sudo 的情况下启动 mongod 服务时,我收到了权限被拒绝的错误。

解决方案是将 db 目录中所有文件的所有权更改回 mongodb:mongodb

$

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


0
投票

我解决了与您删除我的

/data/db
文件夹相同的问题,之后我重新创建了它并赋予了它写入和读取控制权。

我使用官方文档来安装我的版本,但我还使用

data
文件夹

完成了这些操作

希望有帮助。


0
投票

在我的 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


0
投票

上面的答案只告诉了如何解决这个问题一次,但如果你不知道为什么会发生这种情况,它可能会一遍又一遍地发生。

让我补充一下为什么会出现这个问题以及如何避免它。

您很可能曾经直接运行过

sudo mongod
,因此
root
用户尝试将某些内容写入数据库目录,从而损坏路径。您应该使用
monogodb
用户来启动该过程。

所以,请始终坚持以下两种方式开始

mongod

  1. sudo service mongod start
    :这将使用
    /etc/systemd/system/mongod.service
    作为配置文件来启动
    mongod
    。在此配置文件中,已指定用户
    monogodb
  2. sudo -u mongodb mongod
    :另一种方式是指定哪个用户直接启动这个进程。这为您提供了更大的灵活性,但可重复性较低。当您完成 MongoDB 配置后,建议将您的配置持久化到
    /etc/mongod.conf
    /etc/systemd/system/mongod.service
    ,并使用第一种方式启动流程。
© www.soinside.com 2019 - 2024. All rights reserved.