我在 Linux 操作系统下运行 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 中工作而不是作为服务?
最佳答案
这很可能是因为权限问题。
当您运行 sudo mongod
时,它以 root 身份运行并且可以写入任何目录。
相比之下,当作为服务运行时,MongoDB 通常以权限有限的用户身份运行,以防止任何安全问题升级到根级别访问权限。
解决方案是 chmod
或 chown
预期的 dbpath
目录,以便服务用户可以写入该目录。
注意:您可能需要查看 Production Notes获取有关以最佳方式运行 MongoDB 的技巧。
关于linux - 在 shell 中运行 mongodb 可以,但它不能作为服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202805/