我在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通常以有限权限用户运行,以防止任何安全问题升级到根级访问。
解决方案是chmod
或chown
预期的dbpath
目录,以便服务的用户可以写入该目录。
注意:您可能需要查看生产说明,以获取有关以最佳方式运行MongoDB的提示。