在外壳中运行 mongod 可以工作,但它不能作为服务工作



我在Linux OS下运行mongod。我想将数据目录从默认/var/lib/mongodb更改为另一个位置,例如/nfs/mongodb.

当我从shell运行mongodb时(即sudo/usr/bin/mongod --dbpath/nfs/mongodb(,它工作得很好。

下一步,我尝试将mongodb作为服务运行(sudo service mongodb start(

我修改了文件/etc/mongodb.conf,并更改了行dppath=xxx以指向我创建的新目录。当我将mongodb作为服务运行时,出现此错误:

couldn't open file /nfs/mongodb/journal/j._0 for writing errno:1 Operation not permitted, terminating

为什么 mongodb 在外壳中工作而不是作为服务工作?

这很可能是因为权限问题。

当你运行sudo mongod 时,它以 root 身份运行,可以写入任何目录。

相比之下,当作为服务运行时,MongoDB通常以有限权限用户运行,以防止任何安全问题升级到根级访问。

解决方案是chmodchown预期的dbpath目录,以便服务的用户可以写入该目录。

注意:您可能需要查看生产说明,以获取有关以最佳方式运行MongoDB的提示。

最新更新