mongod命令“腐败”MongoDb安装?

时间:2016-02-11 19:48:28

标签: mongodb ubuntu

我使用的是Ubuntu 14.04 LTS,我安装了MongoDB 3.2.1。我遇到了各种各样的问题,我通过从互联网上寻求帮助(感谢谷歌)或者卸载并重新安装MongoDb来解决这个问题。

除非我重新安装,否则无法解决的一个持久性问题是在终端上运行mongod。目前我的mongodb安装工作正常。使用sudo service mongod start我启动mongodb(我在/etc/init/mongod.conf上的xxxx行开始注释,因此它不会自动启动。)和sudo service mongod stop我可以正常停止它。并且它正确地使用/ var / lib / mongodb路径来保存我的集合。

然而,如果我用sudo service mongod stop停止mongodb后,我在终端上点击了mongod,那么mongodb会中断。我遇到了各种各样的错误,比如

  • 无法使用的mongod.lock。我在之前的安装中通过sudo mongod解决了这个问题,但这不是一个合适的解决方案。

  • 找不到
  • / data / db文件夹!!为什么要首先寻找它? /etc/mongod.conf指定dbpath / var / lib / mongodb,这也是安装mongodb时的默认设置!! ??我也使用mongod --dbpath /var/lib/mongodb选项了解它。

我认为还有一个我不记得的错误,但我也通过在线寻找解决方案来修复/得到它。

我知道通过重新安装并且从不运行mongod我可以 - 现在? - 不再面对那些问题(这看起来是一个更好的解决方案,即每当出现这些问题时我做的“解决方法”。我想知道当我输入mongod而不是{{1}时出现的问题是什么}?!

如果有人试图复制问题,我知道在安装后我的系统上只做了两次修改:

  1. 在/etc/init/mongod.conf上注释xxxx行的开头

  2. 按照答案here中的说明禁用透明大页面。 我认为其中任何人都不应该干扰我的安装。

  3. 任何人都可以帮我理解发生了什么吗?是不是那些命令应该做同样的事情?

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,我会尽力回答。

首先,除非你知道自己在做什么,否则你不应该手动启动mongod。

通常(稍微简化),调用[sudo] service mongod start,指示系统读取/etc/init中的相应文件,并根据所述文件中描述的配置启动可执行文件。

然而,当您手动启动mongod时,您实际上调用了mongod二进制文件,即服务器软件本身 - 虽然名称与服务相同,但这两个命令几乎没有共同之处。默认情况下,二进制文件使用/etc/mongod.conf,回退到各种设置的默认值。实际上,您可以看到配置文件在init脚本中显式定义。这就是为什么mongod试图找到/data/db

您可以通过发出

找到所述二进制文件
which mongod

关于锁定文件:当系统启动mongod时,用户root实际上假设有效用户ID为mongod(或mongodb我不知道Ubuntu的顶部是我的头)。当您尝试从用户标识启动它时,您没有权限覆盖锁定文件。之后使用sudo mongod时,您假定有效用户ID为root,另一方面允许覆盖该文件。但是,mongod将以root运行,这是一个安全禁忌。

init脚本定义要使用的环境,在哪个用户下运行以及许多其他内容。除非你真的知道自己在做什么,否则你甚至不应该使用它们,更不用说它了。

现在,用手指向上

  

sudo UNIX的说法"I mean it!"

它具有安全隐患,在使用它之前你应该非常清楚这些含义 - 也就是在你使用它之前阅读你发出的每个命令的man pages,直到你至少有一个基于事实的想法是什么命令正在做。

再次:除非你真的知道(而不是假设)你在做什么,否则不要乱拨系统配置。