我尝试在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
如何处理此错误以及这意味着什么?
答案 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将拒绝启动。
我在我的环境中测试了这个解决方案并且它运行良好:
mongod.lock
文件。mongod --dbpath /your/db/path --repair
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
?让我澄清所有步骤。
在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
键入:mongo
,然后键入use admin
和db.shutdownServer()
,即可连接到您的mongo。就像mongoDB
如果这种技术由于某种原因不起作用,你总是可以杀死这个过程。
通过键入:lsof -i:27017
来查找mongodb进程PID,假设您的mongodb正在端口27017
上运行
键入kill <PID>
,将<PID>
替换为您在上一个命令中找到的值。
答案 5 :(得分:1)
我在linux(Centos)上遇到了同样的错误,这对我有用
从dbpath中删除mongod.lock
$ rm /var/lib/mongo/mongod.lock
修复mongod进程
$ mongod --repair
运行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无法访问哪个文件或目录
答案 8 :(得分:0)
在服务器的“ /”路径中在其中创建文件夹“ data”和“ db”。 实际上,您应该创建或修改要存储数据的文件夹的权限!