我是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 mongod
和killall -9 mongod
我尝试更改权限:sudo chmod 0755 /data/db
和sudo chown $USER /data/db
我的权限似乎是正确的:
drwxr-xr-x 4 slaffont wheel 136 Nov 24 13:28 /data/db/
我已经没想完了。有没有其他人有这个问题?我该怎么办? :(
答案 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 aux
或lsof -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