我在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在shell中运行而不是作为服务?
答案 0 :(得分:1)
这很可能是因为许可问题。
运行sudo mongod
时,它以root身份运行,可以写入任何目录。
相反,当作为服务运行时,MongoDB通常作为有限权限用户运行,以防止任何安全问题升级到根级别访问。
解决方案是chmod
或chown
目标dbpath
目录,以便服务用户可以写入。
注意:您可能需要查看Production Notes以获取有关以最佳方式运行MongoDB的提示。