无法启动本地 MongoDB 服务器。

169

我是mongodb的新手..当我尝试使用mongod命令运行本地服务器时,它无法运行并抛出了这个错误..

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

我尝试删除mongod.lock文件... 然后运行mongod --repair命令。 我还修改了mongod.lock文件的权限。

但是似乎没有任何作用,错误信息仍然一样。 我该怎么办?

我还安装了git版本1.7.4.1, 但在错误信息中显示为nogitversion。


我曾经遇到过同样的问题,这个解决方案对我有用。https://dev59.com/s2025IYBdhLWcg3wyZEn - Eddie
25个回答

177

尝试:

sudo service mongod stop
sudo mongod
停止当前活动的 MongoDB 服务,以便您可以启动一个新的。

1
我也收到了服务消息,但决定忽略它并尝试使用“sudo mongod”重新启动,最终它终于起作用了。 - kpierce8
2
这不应该是mongod(而不是mongodb)吗?基于http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/#stop-mongodb - xavier
5
在Ubuntu 14.10上,sudo service mongodb stop对我有用。 - Joe Corneli
1
在 OS X 上没有 service 命令。如果您是通过 homebrew 安装的 mongo,则可以使用 brew services 命令。(来源:http://unix.stackexchange.com/questions/155715/sudo-service-command-not-found-when-installing-mongodb.) - Charlie Stanard
1
@HarshaMV brew services stop <formula> 请停止<公式>服务 - Jacob
显示剩余3条评论

153

2
这并没有回答原始问题。 - Beau Grantham
9
killall mongod 命令也能够达到同样的效果。参数-15告诉killall发送一个SIGTERM信号,这也是默认的行为。 - T Blank
4
实际上,对我而言,执行"killall"命令比尝试停止服务更有效。尽管这并没有回答问题,但这很有用。 - Andre Pena

60

Andreas Jung:

"Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017

是显而易见的。

另一个mongod实例已经在运行并占用了MongoDB默认端口,即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

29

Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017

以上信息已经说明问题。

另一个 mongod 实例已经在运行并占用了 MongoDB 默认端口 27017。

您可以终止该进程或使用其他端口。


47
在“入门指南”页面上发现了这段话...... 当使用aptitude安装Mongodb时,它已经在运行(因此在示例中您不需要启动它)。 然后只需键入:$ mongo。由于我个人没有启动mongod并且正在按照快速入门教程操作,所以我不知道它已经在运行了...... - sakthig
@Sakti:是的,它已经在我的电脑上运行了!我想我是通过aptitude安装的。谢谢! - sk8terboi87 ツ

29

使用netstat命令查找运行在mongodb端口(27017)的进程。

命令:

sudo netstat -tulpn | grep :27017

输出结果将是:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

在我的情况下,“6432”是进程号,您的情况可能不同。然后使用以下命令终止该进程:
sudo kill <pid>

就是这样!


25

使用:

sudo killall mongod

它将停止服务器。

然后通过以下方式重新启动 mongod

sudo service mongod restart

它应该能够工作。


23

您已经有一个正在运行的进程。您可以使用以下命令将其终止:

killall mongod

15
你希望运行 killall -15 mongod 命令,因为它仍在运行:Address already in use for socket: 0.0.0.0:27017

然后你可以再次运行 mongod


为什么不直接使用 killall mongod - Dmitri Zaitsev
1
No matching processes belonging to you were found - retrovertigo
然后mongod不能是正在运行的进程。也许该地址正在被其他进程使用。 - John Franke

7

如果您找不到任何正在运行的进程或无法通过结束进程来解决问题,请尝试使用不同的端口。例如,尝试使用27018端口,因为默认端口是27017。

mongod  --port 27018

我通过命令mongod --help发现了这个问题。


7
我建议使用以下命令代替: $sudo service mongodb stop 这个命令应该能够起作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接