MongDB重启出现问题

本文详细解释了如何解决MongoDB启动时遇到的/var/run/mongodb/mongod.pidexists错误,包括调整数据存储目录权限和解决因权限不足导致的启动失败问题。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值