无法确定数据目录中锁定文件的状态

时间:2018-02-19 19:07:52

标签: mongodb centos

我正在尝试使用不同的配置文件在同一台centos机器上运行多个mongod实例。

我在将实例作为服务运行时遇到以下错误:

sudo service mongod1 start

/var/lib/mongo1: boost::filesystem::status: Permission denied: "/var/lib/mongo1/mongod.lock"

我使用:

添加了/ var / lib / mongo1的权限
sudo chmod -R 600 /var/lib/mongo1

我最后还尝试了700,755和777,但似乎没有任何效果。

mongod:mongod is the owner of the folder /var/lib/mongo1

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

我知道这真的很晚,但是我为此苦苦挣扎了好几天,现在才找到解决办法。话虽这么说,对于将来遇到此问题的未来用户,如果您使用SELinux,则解决方案是对照您自己检查默认mongodb路径的上下文,以通过执行来确保它们相同

ls -dZ /var/lib/mongo/

输出应如下所示

drwxr-xr-x. mongod mongod system_u:object_r:mongod_var_lib_t:s0 /var/lib/mongo/

如果不是,则可以通过

复制它
chcon -R --reference=/var/lib/mongo /your/path

可以找到源here

答案 1 :(得分:0)

可能缺少lock文件?这可以解释为什么chmod没有达到预期的效果......

尝试:

 touch /var/mongo1/mongod.lock 
 chown mongod:mongod
 chmod 600 /var/mongo1/mongod.lock 

答案 2 :(得分:0)

请记住,目录需要有执行权限,但目录内的文件不需要执行权限

以下 2 个命令对我有用

$ sudo chmod -R 770 /var/lib/mongo1
$ sudo find /var/lib/mongo1 -type f -exec chmod 660 {} \;   

这将首先赋予 /var/lib/mongo1 下的所有执行权限,然后将所有普通文件恢复为只有读写,但不能执行。