2

我是 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/

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

4

6 回答 6

3

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

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

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

于 2012-11-24T19:25:37.410 回答
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

于 2013-02-12T13:59:52.090 回答
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
于 2014-10-02T00:12:22.663 回答
0

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

如果这被证明完全没有结果,您总是可以通过命令行将该--port <portnum>选项传递给mongod进程,告诉它在不同的端口上侦听(对mongoshell 使用相同的选项来告诉它在不同于 27017 的端口上连接。

于 2012-11-24T19:13:21.007 回答
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 运行,但 Mongo 返回一个应该有帮助的错误。

于 2012-11-24T22:15:52.557 回答
0

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

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

terekhov / $ sudo apt-get install mongodb-10gen
--Snip 安装过程--
完成。mongodb
启动/运行,进程 4467
处理 ureadahead 的触发器 ...
terekhov / $ service mongodb start start: Job is already running: mongodb


因此,如果您不需要分叉守护程序等,则只需键入mongo以启动命令外壳;它会自动在端口 27017 上搜索 MongoDB 守护进程。幸运的是,这就是我们的守护进程。

您可以使用以下命令启动/停止/重新启动mongod 进程:sudo service mongodb stop

于 2013-11-26T01:47:43.573 回答