gpt4 book ai didi

Ubuntu 上的 MongoDB 不会作为服务启动,日志中没有任何内容

转载 作者:IT老高 更新时间:2023-10-28 11:16:30 24 4
gpt4 key购买 nike

我在 Ubuntu 上运行 MongoDB 2.2,如果我运行:

sudo mongod

我收到一个错误,它找不到/data/db,这不是数据库所在的位置。在 mongod.conf 中,数据库路径被指定为 Ubuntu 10gen 默认的 /var/lib/mongodb,这是 db 所在的位置。似乎 mongod 没有找到 conf 文件。所以当我运行时:

sudo mongod -f /etc/mongodb.conf

服务器启动正常,输出记录到日志文件:/var/log/mongodb/mongodb.log。一切都很幸福。我可以切换到另一个 shell,登录 mongo shell,查看数据库并运行查询。

所以,我取消了它并尝试作为服务运行:

> sudo status mongodb
mongodb stop/waiting
> sudo start mongodb
mongodb start/running, process 10468

到目前为止看起来不错,但是 mongo 服务器没有启动。运行另一个:

> 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

“test”不是正确的数据库,日志文件中没有任何内容。

我不知道可能出了什么问题。我检查了 Upstart 脚本,它们看起来不错。 /etc/init/mongodb.conf 运行:

mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf

最佳答案

好的,这一切都归结为权限,但让我们一步一步来。当您运行 sudo mongod 时,它根本不加载配置文件,它从字面上开始以默认值编译 - 端口 27017 , database 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 或类似的方法进行验证以确保.完成此操作后,您应该能够让服务再次成功启动。

关于Ubuntu 上的 MongoDB 不会作为服务启动,日志中没有任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com