Mongodb

服務 mongod 無法啟動,更改 dbpath 時權限被拒絕 mongod.lock

  • February 11, 2022

我想要做的:將 mongodb 的 dbpath 從 /var/lib/mongodb 更改為 /home/user/mongodb/data

我使用數據庫版本 v3.4.7

我做了什麼

mkdir -p ~/mongodb/data
sudo chown -R mongodb:mongodb  /home/user/mongodb

更改 /etc/mongodb.conf

storage:
 dbPath: /home/user/mongodb/data/
 journal:

sudo mongod -f /etc/mongod.conf 

這行得通。也試過

sudo mongod --dbpath /home/user/mongodb/data/ 

命令工作正常

sudo service mongod start

命令失敗。檢查日誌文件。

權限被拒絕:“/home/user/mongodb/data/mongod.lock”,終止

到底是怎麼回事?我已經嘗試了我所知道的一切。甚至嘗試將 chmod 777 設置為鎖定文件,但仍然拒絕權限。

如果你現在命令:

sudo chown -R mongodb:mongodb  /home/user/mongodb
sudo service mongod restart

它會起作用的!

這裡的問題是您向該目錄提供sudo mongod --dbpath /home/user/mongodb/data/了創建 ROOT 擁有文件的命令,/home/user/mongodb/data/而您的“普通”mongodb 使用者無權覆蓋這些文件。

因此,永遠不要以 root 身份啟動您的 mongod,或者如果您這樣做,請記住將這些數據文件的所有權重置回 mongodb。

我在 Centos 7 上使用 Mongo 4 執行“sudo mongod –dbpath /path/to/mongo”,這沒關係,但要按照此處的建議進行修復或工作,您必須刪除並安裝。

刪除時,請確保執行正確的命令以重新開始:

  • sudo yum remove mongodb-org*(刪除所有配置)

然後重新安裝並繼續:

  • sudo yum install -y mongodb-org
  • sudo systemctl stop mongod
  • mv / var / lib / mongo / {路徑} / mongo
  • sudo vi /etc/mongod.conf(內聯 dbPath 將路徑更改為“/{path}/mongo”)
  • chown mongod:mongod -R /{path}/mongo/
  • sudo systemctl start mongod

引用自:https://dba.stackexchange.com/questions/183009