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

问题描述 投票:0回答:5

我正在尝试使用不同的配置文件在同一台 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

如有任何帮助,我们将不胜感激。

mongodb centos
5个回答
3
投票

我知道这真的很晚了,但我已经为此苦苦挣扎了好几天,现在才找到解决办法。话虽如此,对于未来遇到此问题的用户来说,如果您使用 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

来源可以在这里找到


0
投票

也许

lock
文件丢失了?这也许可以解释为什么
chmod
没有达到预期的效果......

尝试:

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

0
投票

重要:

不要尝试使用 sudo 重新启动 mongo,因为它会尝试将用户更改为 root,其中 /var/lib/mongodb 所有者是 mongod:mongod


0
投票

我无法评论,所以我在这里完成答案https://stackoverflow.com/a/60748820/8608006

对于我的自定义 mongo 文件夹,我将其放在 /data/mongo/ 中,我遵循了针对 selinux 的 mongo 建议

sudo semanage fcontext -a -t mongod_var_lib_t '/data/mongo.*'
sudo chcon -Rv -u system_u -t mongod_var_lib_t '/data/mongo'
sudo restorecon -R -v '/data/mongo'

但还是没成功。问题是我的 /data 文件夹是 unlabeled_t,我用这个命令修改了它

sudo restorecon -R -v /data

一切正常,我希望这对某人有帮助


-1
投票

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

以下 2 个命令对我有用

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

这将首先赋予

/var/lib/mongo1
下的所有文件执行权限,然后将所有普通文件恢复为只能读取和写入,但不能执行。

© www.soinside.com 2019 - 2024. All rights reserved.