我可以启动MongoDB shell,但不能启动Mongo Daemon

时间:2012-11-24 19:05:48

标签: mongodb

我是MongoDB的新手,我正在尝试运行mongod。如果我输入mongo,我可以运行shell(然后我很好地退出^ C),但是当我尝试输入mongod时,我得到了这个:

mongod --help for help and startup options
Sat Nov 24 13:42:34 [initandlisten] MongoDB starting : pid=99910 port=27017 dbpath=/data/db/ 64-bit host=Macbook-err.local
Sat Nov 24 13:42:34 [initandlisten] 
Sat Nov 24 13:42:34 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
Sat Nov 24 13:42:34 [initandlisten] db version v2.2.1, pdfile version 4.5
Sat Nov 24 13:42:34 [initandlisten] git version: nogitversion
Sat Nov 24 13:42:34 [initandlisten] build info: Darwin 172-26-13-128.dynapool.nyu.edu 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
Sat Nov 24 13:42:34 [initandlisten] options: {}
Sat Nov 24 13:42:34 [initandlisten] journal dir=/data/db/journal
Sat Nov 24 13:42:34 [initandlisten] recover : no journal files present, no recovery needed
Sat Nov 24 13:42:34 [websvr] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:28017
Sat Nov 24 13:42:34 [websvr] ERROR:   addr already in use
Sat Nov 24 13:42:34 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017
Sat Nov 24 13:42:34 [initandlisten] ERROR:   addr already in use
Sat Nov 24 13:42:34 [initandlisten] now exiting
Sat Nov 24 13:42:34 dbexit: 
Sat Nov 24 13:42:34 [initandlisten] shutdown: going to close listening sockets...
Sat Nov 24 13:42:34 [initandlisten] shutdown: going to flush diaglog...
Sat Nov 24 13:42:34 [initandlisten] shutdown: going to close sockets...
Sat Nov 24 13:42:34 [initandlisten] shutdown: waiting for fs preallocator...
Sat Nov 24 13:42:34 [initandlisten] shutdown: lock for final commit...
Sat Nov 24 13:42:34 [initandlisten] shutdown: final commit...
Sat Nov 24 13:42:34 [initandlisten] shutdown: closing all files...
Sat Nov 24 13:42:34 [initandlisten] closeAllFiles() finished
Sat Nov 24 13:42:34 [initandlisten] journalCleanup...
Sat Nov 24 13:42:34 [initandlisten] removeJournalFiles
Sat Nov 24 13:42:34 [initandlisten] shutdown: removing fs lock...
Sat Nov 24 13:42:34 dbexit: really exiting now

这似乎是一个普遍存在的问题,我尝试过:
删除mongod.lock文件rm /data/db/mongod.lock
修理:mongod --repair
杀戮过程:killall -15 mongodkillall -9 mongod
我尝试更改权限:sudo chmod 0755 /data/dbsudo chown $USER /data/db

我的权限似乎是正确的:

drwxr-xr-x  4 slaffont  wheel  136 Nov 24 13:28 /data/db/

我已经没想完了。有没有其他人有这个问题?我该怎么办? :(

6 个答案:

答案 0 :(得分:3)

从您的主要评论中,您似乎通过macports安装了MongoDB(给定/ opt安装位置)。我认为可能会发生的事情是,macports的配方将MongoDB安装为启动服务。

检查此位置是否有与mongodb相关的plist文件:/Library/LaunchDaemons
如果找到它,这意味着您的系统将自动保持此服务运行。如果您只想手动运行mongod,请删除此plist并重新启动。或者你可以尝试这个命令:
launchctl unload /Library/LaunchDaemons/path.to.mongo.plist

否则,在另一个端口上运行另一个mongod实例。

答案 1 :(得分:2)

sudo rm /var/lib/mongodb/mongod.lock
sudo chown -R mongodb:mongodb / var / lib / mongodb /
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo service mongodb start
或者代替最后一个尝试:sudo mongod

答案 2 :(得分:1)

"已用于套接字的地址:0.0.0.0:28017"

看起来mongo已在运行或其他进程正在使用端口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实例的kill命令(本例中为31936):

kill 31936

答案 3 :(得分:0)

看起来某些东西已经绑定到端口27017,使得它看起来像另一个mongod正在运行(在killall上没有被杀死)。 ps auxlsof -i :27017的输出是否显示正在运行的mongod进程?

如果这证明完全无效,您可以始终通过命令行将--port <portnum>选项传递给mongod进程,告诉它在另一个端口上侦听(对{{使用相同的选项) 1}} shell告诉它连接不同于27017的端口。

答案 4 :(得分:0)

正如@shelman所说,你已经有了使用该端口的东西,但是你要了解某些东西是否正在运行是错误的,请尝试:

sudo netstat -lpn |grep :27017

我也注意到了:

Sat Nov 24 13:42:34 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

这更像是一个警告,但仍然应该注意。我最近向一位遇到此问题的人回答了一个问题:Mongod runs, but Mongo returns an error应该有所帮助。

答案 5 :(得分:0)

因为这似乎是一个常见的问题:

作为刚刚解决了这个问题的人,你可能遇到的就是这个。当您第一次安装Mongo(例如,通过apt-get)时,Mongod进程会自动开始运行。例如:

terekhov / $ sudo apt-get install mongodb-10gen
--Snip Install Process--
完成。 MongoDB的
开始/运行,过程4467
处理ureadahead的触发器...
terekhov / $ 服务mongodb start start:作业已在运行:mongodb


因此,如果您不需要forked daemon等,则只需键入mongo即可启动命令shell;它将自动在端口27017上搜索MongoDB守护进程。幸运的是,这就是我们的位置。

您可以使用以下命令start/stop/restart mongod进程:sudo service mongodb stop