我在Ubuntu上,如果我在运行了MongoDB的2.2:
sudo mongod
我得到一个错误,它无法找到/数据/ DB,这是不是在数据库。 在mongod.conf数据库路径被指定为在Ubuntu 10gen的默认/var/lib/mongodb
是其中分贝的位置。 好像mongod
是没有找到conf文件。 所以,当我运行:
sudo mongod -f /etc/mongodb.conf
服务器启动了罚款和输出记录到日志文件: /var/log/mongodb/mongodb.log
。 一切都是幸福的。 我可以切换到另一个shell,登录到蒙戈外壳,看到了数据库和运行查询。
所以,我抵消了这一点,并尝试作为服务运行:
> sudo status mongodb
mongodb stop/waiting
> sudo start mongodb
mongodb start/running, process 10468
看起来不错,到目前为止,但蒙戈服务器没有启动。 运行的另一个:
> sudo status mongodb
mongodb stop/waiting
> mongo
MongoDB shell version: 2.2.0
connecting to: test
Sat Sep 1 19:07:43 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
“测试”是不正确的数据库,并没有出现在日志文件中。
我很茫然,什么可能是错误的。 我检查了暴发户的脚本和他们似乎罚款。 /etc/init/mongodb.conf
运行:
mongodb --exec /usr/bin/mongod -- --config /etc/mongodb.conf
Answer 1:
OK,这一切都归结为权限,但让我们一步一步来。 当您运行sudo mongod
它不会加载配置文件的话,那字面上开始在默认编译-端口27017 , 数据库路径的/数据/ DB等-这就是为什么你得到了错误有关无法找到该文件夹。 在“Ubuntu的默认”当你点它的配置文件(如果你开始使用该服务的命令,这是为你做幕后)时才使用。
接下来,你运行它是这样的:
sudo mongod -f /etc/mongodb.conf
如果有问题之前没有,则会有现在 - 你已经运行的过程中,你的正常配置(在你平常的DBPATH指向和日志)以root用户。 这就意味着,要现在是数字与用户正常MongoDB的文件夹中的文件:组root:root
。
当您尝试再次启动它作为一个正常的服务,这将导致错误,因为MongoDB的用户(该服务将尝试为运行),将没有权限访问这些root:root
文件,最引人注目的是,它可能会无法能够写入日志文件给你任何信息。
因此,要运行它作为一个正常的服务,我们需要解决这些权限。 首先,确保MongoDB是目前不以root运行,则:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
这应该修复它(假定用户:组mongodb:mongodb
),但它可能是最好的验证与ls -al
或类似的是肯定的。 一旦做到这一点,你应该能够得到最好的服务成功地重新开始。
Answer 2:
首先确认MongoDB的用户/组有权写入这两个数据目录和日志文件:
$ sudo的乔敦 - R的MongoDB的:MongoDB中的/ var / lib中/的MongoDB /。
$ sudo的乔敦 - R的MongoDB的:MongoDB的/var/log/mongodb.log
使用下面的命令启动的MongoDB 作为后台程序 (后台进程):
$ mongod的--fork --dbpath的/ var / lib中/的MongoDB / --smallfiles --logpath /var/log/mongodb.log --logappend
要关闭的MongoDB进入蒙戈CLI,访问管理和执行shutdown命令:
$ ./mongo
>使用管理
> db.shutdownServer()
参考: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo
Answer 3:
我也有同样的问题。 所以我去了CD的/ var / lib中/的MongoDB /并删除了mongod.lock文件,那么它为我工作。
Answer 4:
检查数据,日志所有权限和日志文件夹通过@nelsonic的建议后,我的问题是通过给予许可锁定在/ tmp文件夹文件解决
sudo chown mongod:mongod mongodb-27017.sock
我跑它作为一个AWS亚马逊的Linux实例。 我想,通过出如下面作为mongod的用户执行,然后,研究错误代码。 这可能是其他故障排除。
sudo -S -u mongod mongod -f /etc/mongod.conf
Answer 5:
没有为我工作,然后我发现,这是一个权限问题/tmp
目录:
sudo chmod 1777 /tmp
sudo chown root:root /tmp
Answer 6:
以上答案都不为我工作。 我终于想通了与调试初始化脚本:
sudo的庆典-x /etc/init.d/mongodb启动
并看到有人路过,以mongod的错误配置路径。 我只是改变在/etc/init.d/mongodb线从 “CONF =的/ etc / mongodb.conf” 到 “CONF =的/ etc / mongod.conf”。 第2版采用了前者,并安装版本3中添加/etc/mongod.conf使用新的格式,但显然没有更新的init脚本。
更新:我现在有一个更陌生的问题,其中的init脚本工作,但只有当我运行“命令bash的-x /etc/init.d/mongodb开始”,而不是用“sudo的服务MongoDB的开始”。 对于停止同样的事情。
Answer 7:
刚刚尝试下面的命令:
sudo chown mongodb /tmp/mongodb-27017.sock
Answer 8:
在命令行作为mongod的用户推出的时候,而不是与用户= mongod的服务我的MongoDB已开始。 一个小时的检查权限后,该服务,插座的定义...这是SELinux的!
在/ etc / SELinux的/ config中我强制执行 ,以宽容和重启开关。 现在是好的。
Answer 9:
后没有工作对我来说上述的答案,删除我的日志文件带来蒙戈起死回生。
Answer 10:
如果你已经更新的mongod和你正在运行老的数据库,这些天可能会出现此错误。 的mongod将使用wiredTiger引擎默认情况下,你就会有一个mmapv1数据库
编辑/etc/mongod.conf发动机设置
# engine: wiredTiger
engine: mmapv1
小心 - YAML是空白敏感
journalctl / systemd不会看到这个问题。 检查的mongod日志中/var/log/mongodb/mongod.log
我想你可以将数据库的东西,如这里列出的步骤转换
https://docs.mongodb.com/manual/tutorial/change-standalone-wiredtiger/
文章来源: MongoDB on Ubuntu won't start as a service, nothing in the log