前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB 运行 service mongod start 后服务没有启动成功

MongoDB 运行 service mongod start 后服务没有启动成功

作者头像
拓荒者
发布2019-09-06 10:56:35
1.6K0
发布2019-09-06 10:56:35
举报
文章被收录于专栏:运维经验分享运维经验分享

问题描述

查看日志(/var/log/mongodb/mongodb.log)有如下信息

代码语言:javascript
复制
Wiredtiger error(13).....file:WiredTiger.wt,connection:/var/lib/mongodb/WiredTiger.turtle:handle-open:open:Permission denied
  • 1

问题出现原因

  • 1、权限问题。

service mongod start启动时使用的用户默认为mongodb,具体可查看系统文件(/lib/systemd/system/mongod.service

其中含有

代码语言:javascript
复制
[Service]
User=mongodb
Group=mongodb
  • 1
  • 2
  • 3

然后在查看(/var/lib/mongodb/WiredTiger.turtle)的文件权限,使用命令

代码语言:javascript
复制
cd /var/lib
ls -l /var/lib/mongodb
  • 1
  • 2

查看权限发现 WiredTiger.turtle以及其他若干个文件的权限为 root

所以由于mogodb用户的权限无法访问root权限下的文件造成服务启动失败。

但是为什么这几个文件的权限会变为root呢?

我的原因是曾经使用过root用户操作过数据库(在rootx下使用mongod命令等),导致文件的权限变化从而无法再使用(service mongod start)。

解决方案

方案一:

代码语言:javascript
复制
# storage.dbPath
chown -R mongodb:mongodb /var/lib/mongodb

# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb
  • 1
  • 2
  • 3
  • 4
  • 5

将数据文件权限改回mongodb

然后再次启动 service mongo start就可以了,但是如果在以root用户去操作数据库仍会出现上述问题。同时官方极不推荐在root用户下使用数据库。

方案二(从安全性考虑不推荐):

修改

代码语言:javascript
复制
/lib/systemd/system/mongod.service
  • 1

中的userroot,Grouproot

然后再次启动 service mongod start

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
    • 问题出现原因
    • 解决方案
      • 方案一:
        • 方案二(从安全性考虑不推荐):
        相关产品与服务
        云数据库 MongoDB
        腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档