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

2024-06-18

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

sudo mongod

我得到一个错误,它找不到 /data/db,这不是数据库所在的位置。在 mongod.conf 中,数据库路径被指定为 Ubuntu 10gen 默认值/var/lib/mongodb这是数据库所在的位置。似乎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”不是正确的数据库,日志文件中没有显示任何内容。

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

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

好吧,这一切都取决于权限,但让我们一步一步来。当你跑步时sudo mongod它根本不加载配置文件,它实际上是从默认编译的端口开始的27017 https://docs.mongodb.org/manual/reference/configuration-options/#net.port, 数据库路径 https://docs.mongodb.org/manual/reference/configuration-options/#storage.dbPath/data/db 等 - 这就是为什么您收到有关无法找到该文件夹​​的错误的原因。仅当您将其指向配置文件时,才会使用“Ubuntu 默认值”(如果您开始使用服务命令,则会在幕后为您完成此操作)。

接下来你像这样运行它:

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或类似的可以肯定。完成此操作后,您应该能够再次成功启动服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐