解決 mongodb 無法啟動的問題

某天起床後 mongo 忽然活不回來了
查了一下錯誤訊息的 log:

Docs: https://docs.mongodb.org/manual
  Process: 120107 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
  Process: 120104 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120101 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 120099 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

 1月 15 04:01:26 foso-test systemd[1]: Starting MongoDB Database Server...
 1月 15 04:01:29 foso-test mongod[120107]: about to fork child process, waiting until server is ready for connections.
 1月 15 04:01:29 foso-test mongod[120107]: forked process: 120112
 1月 15 04:01:29 foso-test systemd[1]: mongod.service: control process exited, code=exited status=1
 1月 15 04:01:29 foso-test systemd[1]: Failed to start MongoDB Database Server.



看起來應該是權限的問題:
發現很多人都遇到相同的狀況,主要有兩個資料夾勢必要擁有 mongod 這個權限擁有才可以。
所以大部分的解決說明都是這樣作:

chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb

我遇到的比較特別一點 我的 /var/log/mongodb 這個資料夾直接消失所以無法操作這個指令
所以要先補上這個資料夾,並且把擁有者設定上去給 mongod 重新啟動就可以了。


不過這個資料夾如果重新啟動電腦後,又會再消失。(我不知道為什麼)所以仍然無法啟動。這時候我們就要在開啟服務的設定檔上面動點手腳。


第一件事我們可以先去設定開機執行這個服務
你會發現出現這個訊息:


注意:正在轉送請求至「systemctl enable mongod.service」。
Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service.

也就是說,設定檔目前被寫到 /usr/lib/systemd/system/mongod.service 中。
然後我們在裡面加上服務開啟前先建立資料夾並將權限設定好的指令:
ExecStartPre


ExecStartPre=/bin/bash -c 'mkdir -m 777 /var/log/mongodb'


試試看重開機看看吧!

留言