1. 程式人生 > >MongoDB 執行 service mongod start 後服務沒有啟動成功

MongoDB 執行 service mongod start 後服務沒有啟動成功

問題描述

檢視日誌(/var/log/mongodb/mongodb.log)有如下資訊

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

然後在檢視(/var/lib/mongodb/WiredTiger.turtle)的檔案許可權,使用命令

cd /var/lib
ls -l /var/lib/mongodb

檢視許可權發現 WiredTiger.turtle以及其他若干個檔案的許可權為 root

所以由於mogodb使用者的許可權無法訪問root許可權下的檔案造成服務啟動失敗。

但是為什麼這幾個檔案的許可權會變為root呢?

我的原因是曾經使用過root使用者操作過資料庫(在rootx下使用mongod命令等),導致檔案的許可權變化從而無法再使用(service mongod start)。

解決方案

方案一:

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

# systemLog.path
sudo chown -R mongodb:mongodb /var/log/mongodb

將資料檔案許可權改回mongodb

然後再次啟動 service mongo start就可以了,但是如果在以root使用者去操作資料庫仍會出現上述問題。同時官方極不推薦在root使用者下使用資料庫。

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

修改

/lib/systemd/system/mongod.service

中的userroot,Group

root

然後再次啟動 service mongod start