2013-01-20 78 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