MongoDB 執行 service mongod start 後服務沒有啟動成功
阿新 • • 發佈:2018-12-06
問題描述
檢視日誌(/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
中的user
為root
,Group
root
。
然後再次啟動 service mongod start