MongoDB的在Ubuntu将无法启动的日志中服务,没有什么(MongoDB on Ubuntu

2019-06-17 23:46发布

我在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