MongoDB 運行 service mongod start 後服務沒有啓動成功

問題描述

查看日誌(/var/log/mongodb/mongodb.log)有以下信息mongodb

Wiredtiger error(13).....file:WiredTiger.wt,connection:/var/lib/mongodb/WiredTiger.turtle:handle-open:open:Permission denied
  • 1

問題出現緣由

  • 一、權限問題。

service mongod start啓動時使用的用戶默認爲mongodb,具體可查看系統文件(/lib/systemd/system/mongod.service數據庫

其中含有安全

[Service]
User=mongodb
Group=mongodb
  • 1
  • 2
  • 3

而後在查看(/var/lib/mongodb/WiredTiger.turtle)的文件權限,使用命令spa

cd /var/lib
ls -l /var/lib/mongodb
  • 1
  • 2

查看權限發現 WiredTiger.turtle以及其餘若干個文件的權限爲 root日誌

因此因爲mogodb用戶的權限沒法訪問root權限下的文件形成服務啓動失敗。code

可是爲何這幾個文件的權限會變爲root呢?io

個人緣由是曾經使用過root用戶操做過數據庫(在rootx下使用mongod命令等),致使文件的權限變化從而沒法再使用(service mongod start)。file

解決方案

方案一:

# storage.dbPath
chown -R mongodb:mongodb /var/lib/mongodb

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

將數據文件權限改回mongodbservice

而後再次啓動 service mongo start就能夠了,可是若是在以root用戶去操做數據庫仍會出現上述問題。同時官方極不推薦在root用戶下使用數據庫。權限

方案二(從安全性考慮不推薦):

修改

/lib/systemd/system/mongod.service
  • 1

中的userroot,Grouproot

而後再次啓動 service mongod start

相關文章
相關標籤/搜索