自从我更改dbpath
中的/etc/mongodb.conf
以来,MongoDB尚未自动启动,也未使用新的dbpath
。在更改之前,MongoDB将在计算机启动时运行,我只需运行命令mongo
即可进入控制台或启动我的Ruby on Rails服务器而没有任何问题。
在我进行修改之后(为了切换到具有更多空间的新驱动器),我能让一切工作的唯一方法是手动运行命令mongod --config /etc/mongodb.conf
。如果我没有运行它,看起来服务正在运行并且运行没有--config
选项会给我以下错误:ERROR: dbpath (/data/db/) does not exist.
即使配置文件没有说明关于data/db
。
其他一些说明:
/etc/mongodb.conf
之外,我还将所有文件从/var/lib/mongodb
移至/home/nick/appdev/mongodb
。root
更改为nick
。试图改回来,但它似乎没有解决任何问题。答案 0 :(得分:15)
关于上述问题的后续跟进......
在将数据库移动到ec2上的ebs后,我遇到了类似的问题。
事实证明,只运行mongod仍然会将dbpath指向/ data / db /(存在)。
/etc/mongodb.conf
完全被忽略,除非明确指示。
我设法通过使用指令--config
或只使用--dbpath
(两者都工作)来解决这个问题
但是想知道mongod默认从哪里开始......?!
我无法在任何地方找到并覆盖这些默认值。 任何人?
注意: 我对mongod的这种行为感到非常恼火......这只是糟糕的设计和糟糕的文档。
答案 1 :(得分:9)
事实证明,我需要将所有者和群组设置为mongodb
。当我将文件转移到新目录时,我已将所有者和群组设置为我的用户帐户nick
,并且还尝试了root
,但两者均无效。
为此,请执行以下命令:
sudo chown mongodb /home/nick/appdev/mongodb -R
sudo chgrp mongodb /home/nick/appdev/mongodb -R
要确认它是否有效,您可以使用以下命令检查文件权限:
ls -l /home/nick/appdev/mongodb
答案 2 :(得分:1)
按照建议检查数据,日志和日志文件夹中的所有权限后,通过授予/ tmp文件夹中锁文件的权限来解决我的问题
sudo chown mongod:mongod mongodb-27017.sock
我将其作为AWS Amazon Linux实例运行。我通过执行下面的mongod用户计算出来,然后研究错误代码。它可能对其他故障排除很有用。
sudo -S -u mongod mongod -f /etc/mongod.conf
答案 3 :(得分:0)
MongoDB 1.6非常陈旧,最新的生产版本是2.2,其中包含大量的错误修复和增强功能,自1.6起。
我是否更正你没有通过yum或aptitude等软件包管理器安装1.6?我不相信目前有1.6的包装。因此,mongod
表现正常,因为您尚未使用控制脚本启动MongoDB。
有关配置文件选项,请参阅此link。