无法使用python在AWS EC2上连接MongoDb

时间:2016-07-25 13:53:00

标签: python mongodb amazon-web-services amazon-ec2

我已经使用本教程安装了Mongodb 3.0 -

https://docs.mongodb.com/v3.0/tutorial/install-mongodb-on-amazon/

安装得很好。我还为所有数据和日志文件夹(即var / lib / mongo和var / log / mongodb)授予'ec2-user'权限,但也设置了conf文件。

现在问题是mongodb服务器始终无法以命令

启动
sudo service mongod start

它只是说failed,没有别的。

如果我运行命令 -

mongod --dbpath var/lib/mongo

它正确启动了mongodb服务器(虽然我在.conf文件中也提到过相同的dbpath)

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

当您运行sudo mongod时,它根本不加载配置文件,它实际上从编译的默认值开始 - 端口27017,/ {/ 3 /} / {/ 3}等等 - 这就是为什么你得到关于无法找到该文件夹​​的错误。 “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或类似的方式进行验证以确定。完成此操作后,您应该能够再次成功启动服务。

如果您使用以下方式启动mongod作为服务:

sudo service mongod start

确保mongod.conf中为logpath,dbpath和pidfilepath定义的目录存在并归mongod所有:mongod。