2013-01-20 75 views
22

我使用Mac自制命令安装MongoDB的,但是当我运行mongod的MongoDB将无法启动

它不承认我的我的终端:/

如果我在export PATH=$PATH:/usr/local/mongodb/bin类型,然后运行mongod它启动,但很快退出

mongod --help for help and startup options 
Sun Jan 20 18:59:25 [initandlisten] MongoDB starting : pid=59800 port=27017 dbpath=/data/db/ 64-bit host=Kevin-Tucks-MacBook-Pro.local 
Sun Jan 20 18:59:25 [initandlisten] db version v2.0.4, pdfile version 4.5 
Sun Jan 20 18:59:25 [initandlisten] git version: 329f3c47fe8136c03392c8f0e548506cb21f8ebf 
Sun Jan 20 18:59:25 [initandlisten] build info: Darwin erh2.10gen.cc 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_40 
Sun Jan 20 18:59:25 [initandlisten] options: {} 
Sun Jan 20 18:59:25 [initandlisten] journal dir=/data/db/journal 
Sun Jan 20 18:59:25 [initandlisten] recover : no journal files present, no recovery needed 
Sun Jan 20 18:59:25 [initandlisten] preallocateIsFaster=true 2.38 
Sun Jan 20 18:59:25 [websvr] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:28017 
Sun Jan 20 18:59:25 [websvr] ERROR: addr already in use 
Sun Jan 20 18:59:25 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017 
Sun Jan 20 18:59:25 [initandlisten] ERROR: addr already in use 
Sun Jan 20 18:59:25 [initandlisten] now exiting 
Sun Jan 20 18:59:25 dbexit: 
Sun Jan 20 18:59:25 [initandlisten] shutdown: going to close listening sockets... 
Sun Jan 20 18:59:25 [initandlisten] shutdown: going to flush diaglog... 
Sun Jan 20 18:59:25 [initandlisten] shutdown: going to close sockets... 
Sun Jan 20 18:59:25 [initandlisten] shutdown: waiting for fs preallocator... 
Sun Jan 20 18:59:25 [initandlisten] shutdown: lock for final commit... 
Sun Jan 20 18:59:25 [initandlisten] shutdown: final commit... 
Sun Jan 20 18:59:25 [initandlisten] shutdown: closing all files... 
Sun Jan 20 18:59:25 [initandlisten] closeAllFiles() finished 
Sun Jan 20 18:59:25 [initandlisten] journalCleanup... 
Sun Jan 20 18:59:25 [initandlisten] removeJournalFiles 
Sun Jan 20 18:59:25 [initandlisten] shutdown: removing fs lock... 
Sun Jan 20 18:59:25 dbexit: really exiting now 

我试着重新启动我的外壳,但如果我尝试再次运行mongod,它回来为无法识别,需要我export PATH=$PATH:/usr/local/mongodb/bin重新输入。

+1

有些东西已经在使用mongo想要使用的端口。也许以前的mongo实例正在运行。使用'netcat'或类似工具来了解该进程的PID。 – madhead

+0

我不是很熟悉netcat,但我试过netstat和即时通讯.. netstat -an | grep 27017 tcp4 0 0 127.0.0.1.27017 *。* LISTEN 84de1dfcd2270d97 stream 0 0 84de1dfcd318fb37 0 0 0 /tmp/mongodb-27017.sock – Keva161

+0

您是否尝试启动mongo客户端连接到本地主机?也许mongod已经启动,你只需要连接它。 –

回答

3

Sun Jan 20 18:59:25 [websvr] ERROR: addr already in use Sun Jan 20 18:59:25 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017 Sun Jan 20 18:59:25 [initandlisten] ERROR: addr already in use

看起来蒙戈已经运行另一个进程正在使用的端口27017

0

对于您的PATH不是mongod的,它看起来像支持的逻辑,因为版本调整了几次轮到你了。如果升级,该问题可能会自动修复。

正如其他人已经说过,它给了错误表明另一个进程已经使用配置的端口。一种可能性是,过去,您运行了Homebrew向您呈现的命令,将MongoDB作为LaunchAgent安装。如果是这样的话,这个命令应该撤消它,允许你从命令行启动它。

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

+0

我试过hat命令,但是我得到一个错误'launchctl unload〜/ Library/LaunchAgents/homebrew.mxcl.mongodb.plist launchctl:Could not stat(“/ Users/Keva161/Library/LaunchAgents/homebrew.mxcl.mongodb。 plist“):没有这样的文件或目录 什么也没有发现卸载' 它似乎是自动运行一个服务器,当我不希望它:/是否有反正关闭? – Keva161

+0

这听起来像你可能已经将Mongo安装为服务,但不是在那个位置。 Mac OS X不具备用于管理LaunchAgents/LaunchDaemons的特别好用户界面。 “man launchctl”将为您提供有关命令行方法的帮助。 Lingon(目前为5美元)是一款用于管理它们的GUI应用程序,使其更容易。 http://www.peterborgapps.com/lingon/ – davidmc24

4

我刚安装上OSX(10.9.3),mongod的(2.6.1)啤酒,有同样的问题。 Def不运行第二个副本。

$ lsof -i | grep 2701 

显示没有开放端口。

我发现以下帮助。

默认的配置文件酿造写入(/usr/local/etc/mongod.conf)包含以下行:

bind_ip = 127.0.0.1,<my-machine>.local 

如果您编辑该文件并更改行下面的任一:

bind_ip = 127.0.0.1 
or 
bind_ip = <my-machine>.local 

然后用下面的命令重新启动服务,它应该按预期启动。

$ brew services restart mongodb 

您可以通过在另一个窗口尾矿日志文件检查的成功或失败,同时启动

$ tail -f /usr/local/var/log/mongodb/mongo.log 

看来它正试图打开都在这里列出的地址,他们都决心127.0。 0.1,所以我们总是在尝试打开第二个端口时失败,然后关闭整个事情。

73

凯尔:“它看起来像蒙戈已经运行另一个进程使用端口27017”

在这种情况下,键入以下命令

ps wuax | grep mongo 

你应该看到的东西,看起来像这样

User   31936 0.5 0.4 2719784 35624 ?? S  7:34pm 0:09.98 mongod 
User   31945 0.0 0.0 2423368 184 s000 R+ 8:24pm 0:00.00 grep mongo 

现在的mongod的情况下(在这种情况下31936)输入kill命令:

kill 31936 
+0

真棒!这对我有效。 :) –

+1

不得不使用“sudo kill pid” – user3681587

+0

已修复:)谢谢。 – Airwavezx

0

此解决方案适用于我。我使用MongoDB的3.2版

我设置路径,

/usr/local/bin 

我可以把MongoDB的数据目录/数据/ DB,并设置权限myown帐户。来自mkyong的tutorial真的很有帮助。

0

对于任何谁在这里降落了的人来说,这是通过停止已经运行mongodb服务解决(至少在我结束):

brew services stop mongodb

,然后运行mongod