无法启动mongodb本地服务器


167

我是mongodb的新手..当我尝试使用mongod命令运行mongodb本地服务器时,它无法运行并引发此错误。

/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。


我遇到了同样的问题,这个解决方案对我有用stackoverflow.com/questions/5798549/…–
Eddie

Answers:


176

尝试:

sudo service mongod stop
sudo mongod

要停止当前的活动mongodb服务,然后允许您启动新的服务


1
我也收到了服务消息,但是决定忽略它,然后尝试再次使用“ sudo mongod”重新启动,并且在它最终起作用之后
kpierce8 2014年

2
这不应该是mongod(不是mongodb)吗?基于docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/...
泽维尔

5
sudo service mongodb stop在Ubuntu 14.10上为我工作。
Joe Corneli 2015年

1
在OS X上没有服务命令。如果您通过自制软件安装了mongo,则可以使用brew services。(通过unix.stackexchange.com/questions/155715/...
查理斯塔纳德

1
@HarshaMV`酿造服务停止<公式>
雅各布

149

不要使用-9信号终止进程,因为它会造成损害:http : //www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

使用sudo killall -15 mongod替代


2
这不能回答原始问题。
Beau Grantham 2012年

8
killall mongod也做同样的事情。该-15通知killall发送SIGTERM信号,其中它在默认情况下。
T空白

4
实际上,执行killall确实对我有用,而不是尝试停止服务。因此,即使它不能回答问题。这是有用的
安德烈·佩纳

59

安德烈亚斯·荣格(Andreas Jung):

“星期六6月25日09:38:51 [initandlisten] listen():bind()失败errno:98地址已用于套接字: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

6月25日星期六09:38:51 [initandlisten] listen():bind()失败errno:98地址已用于套接字:0.0.0.0:27017

是自言自语。

mongod的另一个实例已在运行,并分配了MongoDB默认端口27017。

要么终止另一个进程,要么使用其他端口。


47
在入门页面上发现了此内容... **当通过aptitude 安装 mongodb **时,它已经在运行(因此在示例中,您 无需启动它)。然后只需键入:$ mongo ..因为我亲自开始启动mongod,而且我正在遵循快速入门教程..我已经知道它已经在运行...
sakthig 2011年

@Sakti:是的,它已经在为我运行!我想我是通过能力来做到的。谢谢!
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”是pid,在您的情况下可能有所不同。然后使用以下命令终止该进程:

sudo kill <pid>

而已!



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一定不是正在运行的进程。也许地址已被使用由不同的过程
约翰Ottenlips

7

如果找不到当前正在运行的进程或将其杀死是行不通的,请尝试使用其他端口。例如,尝试使用27018,因为默认值为27017。

mongod  --port 27018

我通过命令发现了这一点, mongod --help



6

尝试使用killall -15 mongod / killall mongod即使在此之后仍然无法解决问题,请通过键入以下命令删除db存储文件夹sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OSX。 活动监视器,查找mongod,将其交叉。然后再次运行mongod。问题解决了。


OP没有指定操作系统,但是日志文件明确表示Linux。
Nic Nilov

4

打开终端并输入:

mkdir -p /data/db

然后输入:

mongod

3

当我尝试打开mongod的新实例时,我遇到了同样的问题,它说它已经在运行。

我检查了文档,并说要输入

mongo
use admin
db.shutdownServer()

3

MongoDB无法启动主要是由于不干净的关机。要解决此问题,请删除mongod.lock文件。该文件位于数据文件夹中。

通过查看mongodb.conf或mongod.conf文件来找出数据文件夹的位置。(在Linux系统上,/ etc下的Conf文件。)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

例如,使用上述配置,文件位于/var/lib/mongodb/mongod.lock。只需将其删除并重新启动mongodb。


1
这对我来说已经不止一次发生,尤其是在无响应时已“硬重置”的云服务器上。这是一个简单的解决方法,应该是一个最佳答案。
SevakPrime

2

我也遇到过同样的问题。尽管该mongodb服务未运行,但日志显示address already in use消息。

 $netstat -tulpn | grep :27017 

什么都不返回

经进一步分析发现,该问题是由于锁定文件引起的。删除锁定文件并重新启动后,该服务运行良好。

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

在/var/log/mongodb/mongod.log中检查日志,并尝试推断错误。就我而言

无法取消套接字文件/tmp/mongodb-27017.sock的错误链接errno:1不允许操作

删除了/tmp/mongodb-27017.sock,它起作用了。


1

尝试

/usr/lib/mongodb/mongod.exe --dbpath c:data \ db

--dbpath(后跟您数据库的路径)



1

要解决Windows中的问题,请执行以下步骤:

例如,已安装mongoDB 3.6版,MongoDB的安装路径为“ D:\ Program Files \ MongoDB”。

创建文件夹D:\ mongodb \ logs,然后在此文件夹中创建文件mongodb.log。

管理员身份运行cmd.exe ,

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

删除这两个文件,mongod.lockstorage.bson在文件夹“ D:\ mongodb \ data”下。

然后net start MongoDB使用管理员权限键入cmd,此问题将得到解决。


0

它显示错误listen():bind()失败errno:98地址已用于套接字:0.0.0.0:27017,即其他服务已使用27017地址。请通过“ netstat -apt | grep“ 27017”“命令进行检查


0

(如果您使用的是Linux),如果

mongod --shutdown --config=path/to/your/configFile.conf 

要么

mongod --repair --config=path/to/your/configFile.conf 

未解决问题,请注销并重新登录。那解决了我的问题。

我想您也可以从终端手动终止该过程。




0

杀死进程无法解决我的问题。我的Mac崩溃了,重新启动后,mongo dbPath中存在一些锁定文件(mongod.lock,WiredTiger.lock)。我将这些文件移到了其他文件夹(为了避免出现更多问题,我没有删除它们),然后它起作用了。在后继之星上,我删除了移动的锁定文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.