2011-05-12 130 views
18

早些時候,我存儲所有MongoDB的數據文件在/ var/lib中/ MongoDB的directory..and在/etc/mongodb.conf的DBPATH條目是在/ var/lib中/ MongoDB的..MongoDB的數據目錄的權限

現在我想將數據目錄更改爲/vol/db..so,我創建了目錄/ vol/db,並使用sudo chown -R id -u/vol/db更改了權限,並將db路徑條目更改爲/ vol/db /etc/mongodb.conf

現在

當我使用sudo服務啓動MongoDB的MongoDB的start..i我得到的/var/log/mongodb/mongodb.log

這個錯誤

我需要幫助..我錯了嗎?

+0

我正在使用sudo chown -R id -u/vol/db和sudo chown -R username:username/vol/db – 2011-05-12 05:58:19

+1

您可以粘貼ls -altrh/vol和ls -altrh/vol/db的輸出嗎? – lobster1234 2011-05-12 06:06:28

+0

我有同樣的問題,如果你已經解決了這個問題,你能回覆嗎? – zubinmehta 2011-08-03 15:59:46

回答

27

我有同樣的問題,但能夠解決它得益於similar question。您需要確定/vol/db/mongodb所有。

sudo chown -R mongodb:mongodb /vol/db/ 

如果你得到錯誤chown: invalid user: 'mongodb:mongodb',檢查/etc/passwd,看看是否有存在類似的用戶(例如:mongod)。

+2

如果我得到一個無效的用戶錯誤,並且在etc/passwd中沒有任何類似 – TMin 2016-04-09 20:51:50

+0

的東西(如果我的服務名稱是'mongod',那麼我的用戶:group? – Darpan 2016-07-25 14:33:16

+0

可能是mongod,試試:groups mongod – igorludi 2017-01-23 15:33:27

4

如果在更改新數據庫路徑的權限和所有權後,仍然看到此問題,請運行getenforce以查看您是否正在使用SELinux以強制模式運行的系統。 如果getenforce返回「強制執行」,很可能selinux是導致權限錯誤的原因,因爲現在mongodb在原始上下文範圍之外運行,因爲db位置已更改爲/ var/lib/...

I don 「知道的細節,但隨後強力的方式來解決問題,而無需編寫自己的SELinux策略對新的上下文是簡單地關閉SELinux的: -/

sudo setenforce 0 

理想情況下,你會弄清楚如何如果您計劃在生產環境中運行,請更新selinux策略。

15

最簡單的將是

sudo chmod 777 /data/db 
+0

這對我有效..當我跑sudo chown mongodb:mongoDB/vol/db我收到了:「非法組名」......這個解決方案工作了 – hanzolo 2016-01-27 22:50:58

+0

我和hanzolo一樣。這一個爲我工作。 – MLyck 2016-04-10 01:38:12

+8

這個命令會給有問題的目錄提供非常開放的權限。來自@Kaezarrex('sudo chown mongodb:mongodb/data/db')的答案應該具有期望的效果,而不必如此廣泛地打開權限。 – 2016-05-26 08:59:15

1

,我建議通過閱讀蒙戈日誌

tail -50 /var/log/mongodb/mongodb.log 

可以立即發現問題(包括許可的)

0

嘗試查看什麼是錯誤如下:

$ sudo chmod 755 /vol/db && sudo chown $USER /vol/db