MongDB重啓出現問題

1:首先要明白一點:/var/run/mongodb/mongod.pid exists  這個錯誤的出現不會因爲此文件的刪除而解決掉,因爲權限不足,
我們無法完全刪除掉這個文件。所以我們首先要解決權限的問題。這一點我們可以在mongod.log信息中得到答案。
通過sudo more /var/log/mongodb/mongod.log 可以查看詳情
2:如果我們修改了MongoDB的數據存放目錄爲/mongo/【sudo mkdir mongo】,首先要明白,我們新建的目錄mongo是沒有權限存放數據的,我們要把存放數據的權限給予它,
假設我們現在登錄的用戶爲shiwei,並不是以root用戶角色登錄的,如果一開始就是以root角色進行登錄的,則sudo chown -R shiwei:shiwei /mongo命令不需要。則這樣修改: sudo chown -R shiwei:shiwei /mongo
原因:因爲mongo目錄創建的時候是以root用戶創建的,但是我們使用shiwei這個角色登錄時,shiwei這個用戶的角色是沒有mongo的控制權限的。
[shiwei@hdp-07 mongodb]$ ls -l /
total 110
...
drwxr-xr-x    2 root       root        0 Sep  6 21:16 misc
drwxr-xr-x.   2 root       root         4096 Sep 23  2011 mnt
drwxr-xr-x  2 shiwei  shiwei    4096 Sep  6 21:26 mongo
drwxr-xr-x    2 root       root        0 Sep  6 21:16 net
drwxr-xr-x.   3 root       root        4096 Jun  8 22:42 opt
...

通過下面可以看到,MongoDB默認情況下,數據存儲目錄是由mongod組的mongod角色控制的
[shiwei@hdp-07 mongodb]$ sudo ls -l /var/lib/
total 112
...
drwxr-xr-x. 2     root           root           4096 Jun  8 22:59 misc
drwxr-x---. 2      root          slocate      4096 Sep  6 20:18 mlocate
drwxr-xr-x  4    mongod  mongod   4096 Sep  6 21:30 mongo
drwxr-xr-x. 5      root          root          4096 Jun  8 22:41 nfs
...
3:通過命令“sudo ls -l /var/lib”可以看到   drwxr-xr-x  4 mongod  mongod  4096 Sep  6 09:19 mongo
mongo目前是以mongod的角色運行的,所以我們要賦予mongod角色權限。 sudo chown -R mongod:mongod /mongo/
原因:當我們使用yum方式安裝MongoDB時,yum會主動幫我們生成mongod這個角色,並且以這個角色運行mongo(我們數據的存儲目錄),所以我們要把這個存儲目錄的權限賦予mongod.

總結:這個問題出現的主要原因就是我們修改了MongoDB的數據存儲路徑,但是MongoDB的數據存儲路徑默認是由mongod組的mongod角色控制的,所以我們要把新建數據的存儲目錄的權限賦予mongod組的mongod角色,命令就是sudo chown -R mongod:mongod /mongo/

完整的命令如下:

[shiwei@hdp-07 mongodb]$ sudo chown -R shiwei:shiwei /mongo/
[shiwei@hdp-07 mongodb]$ sudo chown -R mongod:mongod /mongo/
[shiwei@hdp-07 mongodb]$ sudo rm -rf /var/run/mongodb/mongod.pid 

此時可以正常啓動。

[shiwei@hdp-07 mongodb]$ sudo service mongod start               
Starting mongod:                          [  OK  ]

在我處理這個問題的時候,外國的一位網友同樣提供了一個解決方案,也同樣適用。

https://stackoverflow.com/questions/41678609/mongo-restart-error-var-run-mongodb-mongod-pid-exists

希望各位不要在此入坑,共勉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章