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

g2ieeal7  于 2023-01-08  发布在  Go
关注(0)|答案(4)|浏览(391)

我尝试在同一台centos机器上使用不同的配置文件运行多个mongod示例。
将示例作为服务运行时出现以下错误:

sudo service mongod1 start

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

我使用以下命令添加了/var/lib/mongo 1的权限:

sudo chmod -R 600 /var/lib/mongo1

我也尝试了700,755和777在最后,但似乎没有任何工作。

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

任何帮助都很感激。

dced5bon

dced5bon1#

我知道这已经很晚了,但是我已经为此纠结了好几天,现在才找到了修复方法。也就是说,对于将来遇到这个问题的用户,如果您使用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

inkz8wg9

inkz8wg92#

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

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

v1uwarro3#

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

tnkciper

tnkciper4#

请记住,目录需要具有执行权限,但目录中的文件不需要执行权限
以下2个命令对我有效

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

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

相关问题