【问题标题】:Can't connect MongoDb on AWS EC2 using python无法使用 python 在 AWS EC2 上连接 MongoDb
【发布时间】:2016-11-28 21:45:00
【问题描述】:

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

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

它已经安装好了。我还授予 'ec2-user' 权限以访问所有数据和日志文件夹,即 var/lib/mongo 和 var/log/mongodb,但也设置了 conf 文件。

现在问题是 mongodb 服务器总是无法使用命令启动

sudo service mongod start

它只是说failed,没有别的。

如果我运行命令 -

mongod --dbpath var/lib/mongo

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

我在这里做错了什么?

【问题讨论】:

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


    【解决方案1】:

    当您运行 sudo mongod 时,它根本不会加载配置文件,它实际上是从默认编译的开始 - 端口 27017database path 的 /data/db 等 - 这就是您获得关于无法找到该文件夹​​的错误。 “Ubuntu 默认”仅在您将其指向配置文件时使用(如果您开始使用 service 命令,这将在幕后为您完成)。

    接下来你像这样运行它:

    sudo mongod -f /etc/mongodb.conf
    

    如果之前没有问题,那么现在就会有 - 您已经运行了该进程,并以 root 用户身份使用您的正常配置(指向您通常的 dbpath 和日志)。这意味着现在该普通 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 .
    

    这应该可以解决问题(假设 user:group 是 mongodb:mongodb),但最好使用 ls -al 或类似名称进行验证。完成此操作后,您应该能够让服务再次成功启动。

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

    sudo service mongod start
    

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

    【讨论】:

    • 好吧,我正在阅读相同的答案stackoverflow.com/a/12232668/609782 我不明白的是,我的服务名称是mongod,我以ec2-user 登录,所以在做chown我的user:group 应该是什么?绝对不是 mongodb:mongodb,是吗?
    • 执行 ls -al 并检查用户组是什么并相应地更改权限。
    • 需要在哪个文件夹上调用ls -al? (或者没关系?)当我在根目录上这样做时,我得到了一个包含不同用户的列表:组
    • /etc/mongodb 文件夹
    猜你喜欢
    • 2019-10-23
    • 2016-09-22
    • 2021-10-06
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多