27

我试图在我的 macbook air 上安装 mongoDB。

我已经从官方网站下载了压缩文件并将该文件解压缩并移至根目录。之后,在该目录下,我创建了 /data/db 和 /log 文件夹。

这是我的mongodb.config,它描述了我的数据库的基本配置。

dbpath = /mongodb/data/db
logpath = /mongodb/log/mongo.log
logappend = true
#bind ip = 127.0.0.1
port = 27017

fork = true
rest = true
verbose = true
#auth = true
#noauth = true

另外,我想知道#配置文件中的含义。

我把这个文件放到/mongodb/bin,/mongodb是我把文件解压到的目录。

我打开终端并进入./mongod --config mongodb.config,我得到了这个。

Juneyoung-ui-MacBook-Air:bin juneyoungoh$ ./mongod --config mongodb.config
about to fork child process, waiting until server is ready for connections.
forked process: 1775
all output going to: /mongodb/log/mongo.log
ERROR: child process failed, exited with error number 100

我该如何处理这个错误,这意味着什么?

4

9 回答 9

34

您创建的数据文件夹很可能是使用创建的sudo,是吗?它们归您的普通用户所有,root不能由您的普通用户写入。如果您是您的 macbook 的唯一用户,则将目录的所有权更改为您:

sudo chown juneyoungoh /data
sudo chown juneyoungoh /data/db
sudo chown juneyoungoh /data/log

如果您打算将其安装在公共机器或合法的地方,那么请在其他地方阅读有关 mongo 安全实践的更多信息。我会让你在你的macbook上运行。

于 2013-04-12T05:14:16.703 回答
14

我有一个类似的问题,它与任何“sudo”问题无关。我试图从内核恐慌中恢复过来!

当我查看我的数据文件夹时,我发现那里有一个 mongod.lock 文件。就我而言,这个页面帮助很大:http ://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/ 。正如他们解释的那样,

如果 mongod.lock 不是零字节文件,则 mongod 将拒绝启动。

我在我的环境中测试了这个解决方案,它运行良好:

  1. 删除mongod.lock文件。
  2. 修复数据库:mongod --dbpath /your/db/path --repair
  3. 运行蒙戈:mongod --dbpath /your/db/path
于 2014-10-10T14:41:06.593 回答
9

我的机器上也有同样的问题。在日志文件中是:

7 月 29 日星期一 09:57:13.689 [initandlisten] 错误:日志文件的可用空间不足
7 月 29 日星期一 09:57:13.689 [initandlisten] 请在 /var/mongoexp/rs2/journal 中至少提供 3379MB 或使用 --smallfiles

它是通过使用解决的mongod --smallfiles。或者,如果您使用--config选项启动 mongod,而不是在配置文件中禁用预写日志nojournal=true(删除开头的 #)。更多的磁盘空间也可以解决上述问题。

于 2013-07-29T08:52:26.617 回答
4

这是因为您可能没有正确关闭 mongodb,并且您没有以正确的方式启动 mongodb。根据你的mongodb.config,你有dbpath = /mongodb/data/db- 所以我假设你创建了存储库/mongodb/data/db?让我澄清所有步骤。

  1. 启动 MongoDB

在您mongodb.config更改dbpath = /mongodb/data/dbdbpath = /data/db. 在您的终端上键入以下内容创建数据库存储库:mkdir /data/db。现在你有了一个存储库——你可以启动你的 mongo。

在后台启动 mongo 类型:mongod --dbpath /data/db --fork --logpath /dev/null.

  • /data/db是分贝的位置。
  • --fork意味着你想在后台启动 mongo - deamon。
  • --logpath /dev/null意味着您不想记录-您可以通过替换/dev/null为类似的路径来更改它/var/log/mongo.log

    1. 关闭 MongoDB

通过键入连接到您的 mongo:mongo然后use admindb.shutdownServer()。就像在mongoDB中解释

如果此技术由于某种原因不起作用,您可以随时终止该进程。

通过键入以下内容查找 mongodb 进程 PID:lsof -i:27017假设您的 mongodb 正在端口上运行27017

键入kill <PID>,替换<PID>为您在上一个命令中找到的值。

于 2015-09-17T15:05:44.050 回答
3

具有相同错误的类似问题 - 我试图运行修复脚本 sudo -u mongodb mongod -f /etc/mongodb.conf --repair

检查ps aux | grep mongo并查看守护程序正在运行。停止它,然后修复脚本运行没有问题。

希望这对其他人有帮助。

于 2013-07-09T08:43:36.607 回答
2

我在linux(Centos)上遇到了同样的错误,这对我有用

  1. 从 dbpath 中删除 mongod.lock

    $ rm /var/lib/mongo/mongod.lock

  2. 修复mongod进程

    $ mongod --repair

  3. 运行 mongod 配置

    $ mongod --config /etc/mongod.conf

于 2016-10-03T13:52:02.983 回答
0

我有同样的错误。我以交互方式运行它以查看日志。

2014-10-21T10:12:35.418-0400 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017

然后我过去常常lsof找出哪个进程正在使用我的端口。

$ lsof -i:27017
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mongod  2106 MYUSERID   10u  IPv4 0x635b71ec3b65b4a1      0t0  TCP *:27017 (LISTEN)

这是mongod我之前分叉并忘记关闭的一个(因为我没有看到它在我的 bash 窗口中运行)。只需通过运行来杀死它kill 2106,就可以使我的进程运行而不会出现错误 100。

于 2014-10-21T14:45:38.997 回答
0

在服务器的“/”路径中创建文件夹“data”和“db”。实际上,您应该创建或修改要存储数据的文件夹的权限!

于 2019-04-30T12:35:30.250 回答
0

通常,当 mongod.conf 文件无法找到数据库存储或日志存储的特定路径,或者可能是 processid 存储,或者它没有获得文件权限来访问已在 mongod 中声明的配置目录和文件时,就会出现此错误.conf

要解决此错误,我们需要观察 MongoDB 生成的日志,它将清楚地指示您 MongoDB 无法访问的文件或目录

上面的错误可能看起来像下面的截图 在此处输入图像描述

在此处输入图像描述

于 2018-08-14T07:02:41.240 回答