安装mongoDB(子进程失败,退出错误号为100)

时间:2013-04-12 04:36:53

标签: macos mongodb install

我尝试在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

如何处理此错误以及这意味着什么?

9 个答案:

答案 0 :(得分:24)

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

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

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

答案 1 :(得分:12)

我有一个类似的问题,它与任何'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:mongod --dbpath /your/db/path

答案 2 :(得分:9)

我的机器上出现了同样的问题。在日志文件中是:

  

Mon Jul 29 09:57:13.689 [initandlisten] ERROR:日志文件的可用空间不足
  Mon Jul 29 09:57:13.689 [initandlisten]请在/ var / mongoexp / rs2 / journal中至少提供3379MB或使用--smallfiles

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

答案 3 :(得分:3)

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

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

希望这对其他人有帮助。

答案 4 :(得分:1)

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

  1. 开始MONGODB
  2. mongodb.config中,将dbpath = /mongodb/data/db更改为dbpath = /data/db。在终端上键入:mkdir /data/db创建数据库存储库。现在你有了一个存储库 - 你可以启动你的mongo。

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

    • /data/db是db的位置。
    • --fork表示你想在后台启动mongo - deamon。
    • --logpath /dev/null表示您不想记录 - 您可以将/dev/null替换为/var/log/mongo.log

      之类的路径来更改
      1. 关闭MONGODB

    键入:mongo,然后键入use admindb.shutdownServer(),即可连接到您的mongo。就像mongoDB

    中的解释一样

    如果这种技术由于某种原因不起作用,你总是可以杀死这个过程。

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

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

答案 5 :(得分:1)

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

  1. 从dbpath中删除mongod.lock

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

  2. 修复mongod进程

    $ mongod --repair

  3. 运行mongod config

    $ mongod --config /etc/mongod.conf

答案 6 :(得分: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运行。

答案 7 :(得分:0)

通常,当mongod.conf文件无法执行此错误时 找一条路 数据库存储 或日志存储 或也许processid商店 或可能没有获得访问mongod.conf中声明的配置目录和文件的文件许可权

要解决此错误,我们需要观察MongoDB生成的日志 它会明确指出您的MongoDB无法访问哪个文件或目录

以上错误可能类似于以下屏幕截图 enter image description here

enter image description here

答案 8 :(得分:0)

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