linux - 在 shell 中运行 mongodb 可以,但它不能作为服务运行

标签 linux mongodb service

我在 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 通常以权限有限的用户身份运行,以防止任何安全问题升级到根级别访问权限。

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

注意:您可能需要查看 Production Notes获取有关以最佳方式运行 MongoDB 的技巧。

关于linux - 在 shell 中运行 mongodb 可以,但它不能作为服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202805/

相关文章:

c# - 如何在不同的 AppDomain 中运行多个服务实例?

linux - 拒绝访问 apache 拥有的文件

java - 控制 Gumstix Overo GPIO

linux - 如何获得内核空间的大小?

linux - 在远程计算机上 SSH 注销后,Firefox 进程终止

node.js - 使用位置运算符的 MongoDB 推送不起作用

javascript - 设置 Mongoose 文档的排序顺序

python - 如何使用 Python 从 ObjectID 获取 id?

Android 服务未通过警报启动

powershell - 查找具有特定起始名称的特定服务