【问题标题】:Permission denied error Change dbpath for mongodb in centosPermission denied error Change dbpath for mongodb in centos
【发布时间】:2020-07-30 14:16:15
【问题描述】:

我正在尝试更新 mongo db 的 dbpath。我按照以下步骤操作:

1) 创建新目录:sudo mkdir /mnt/database/mongo

2) 更改所有者:sudo cp -R /var/lib/mongo/ /mnt/database/

3) 复制数据库文件:sudo chown mongod:mongod -R /mnt/database/mongo

4) 更新mongo配置文件:

存储:

dbPath: /mnt/database/mongo

5) 重启mongod服务:sudo systemctl restart mongod

服务重启命令报如下错误:

mongod.service 的作业失败,因为控制进程以错误代码退出。详情请参阅systemctl status mongod.servicejournalctl -xe

日志文件内容:

 I  CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid", timeZoneInfo: "/usr/share/zoneinfo" }, storage: { dbPath: "/mnt/database/mongo", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2020-04-17T04:56:00.666+0000 I  STORAGE  [initandlisten] exception in initAndListen: Location28596: Unable to determine status of lock file in the data directory /mnt/database/mongo: boost::filesystem::status: Permission denied: "/mnt/database/mongo/mongod.lock", terminating

我是否遗漏了有关许可的任何步骤。

系统日志:/var/log/messages systemd:正在停止 MongoDB 数据库服务器... systemd:正在启动 MongoDB 数据库服务器... mongod:即将 fork 子进程,等待服务器准备好连接。 mongod:分叉进程:17968 mongod:错误:子进程失败,以错误号 100 退出 mongod:要查看此输出中的其他信息,请在没有“--fork”选项的情况下开始。 systemd: mongod.service: 控制进程退出,code=exited status=100 systemd:无法启动 MongoDB 数据库服务器。 systemd:单元 mongod.service 进入失败状态。 systemd: mongod.service 失败。

目录权限:

/mnt : drwxr-xr-x。 6 mongod mongod mnt

/mnt/数据库:

drwxrwxrwx。 3 mongod mongod数据库

/mnt/database/mongo:

drwxrwxrwx。 4 mongod mongod mongo

/mnt/database/mongo 下的文件:

-rwxrwxrwx. 1 mongod mongod 20480 collection-0-1788044936069962496.wt
-rwxrwxrwx. 1 mongod mongod 36864 collection-2-1788044936069962496.wt
-rwxrwxrwx. 1 mongod mongod  4096 collection-4-1788044936069962496.wt
drwxrwxrwx. 2 mongod mongod    90 diagnostic.data
-rwxrwxrwx. 1 mongod mongod 20480 index-1-1788044936069962496.wt
-rwxrwxrwx. 1 mongod mongod 36864 index-3-1788044936069962496.wt
-rwxrwxrwx. 1 mongod mongod  4096 index-5-1788044936069962496.wt
-rwxrwxrwx. 1 mongod mongod 12288 index-6-1788044936069962496.wt
drwxrwxrwx. 2 mongod mongod   110 journal
-rwxrwxrwx. 1 mongod mongod 20480 _mdb_catalog.wt
-rwxrwxrwx. 1 mongod mongod 36864 sizeStorer.wt
-rwxrwxrwx. 1 mongod mongod   114 storage.bson
-rwxrwxrwx. 1 mongod mongod    47 WiredTiger
-rwxrwxrwx. 1 mongod mongod  4096 WiredTigerLAS.wt
-rwxrwxrwx. 1 mongod mongod    21 WiredTiger.lock
-rwxrwxrwx. 1 mongod mongod  1185 WiredTiger.turtle
-rwxrwxrwx. 1 mongod mongod 61440 WiredTiger.wt

mongodb 目录的安全上下文:

ls -Z /mnt/数据库

drwxrwxrwx. mongod mongod unconfined_u:object_r:mnt_t:s0   mongo

【问题讨论】:

  • 检查系统日志以查看 selinux 是否拒绝访问该目录。
  • 系统日志不包含任何表明来自 selinux 的问题的日志
  • 确保 /mnt/mnt/database 至少拥有 mongod 用户的 x 权限。您可能会尝试 sudo 或 su 到 mongod 并尝试读取数据目录。
  • @Joe 我已授予 /mnt、/mnt/database 目录的完全权限。使用权限集更新了问题。
  • 使用 ls -Z 检查每个目录和文件的安全上下文,同时在 /var/log/audit/audit.log 中查找相关消息

标签: mongodb


【解决方案1】:

解决了执行 chcon -R --reference=/var/lib/mongo /mnt/database/mongo 的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 2012-01-29
    • 2022-12-02
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    相关资源
    最近更新 更多