MongoDB - 无法连接到服务器 127.0.0.1:27017。

227

我来自Riak和Redis,在那里我从未遇到过这些服务启动或交互方面的问题。

这是MongoDB普遍存在的问题,而我对此一窍不通。重新启动没有帮助。我是MongoDB的新手。

mongo
MongoDB shell version: 2.2.1
connecting to: test
Fri Nov  9 16:44:06 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed

这是我在日志中看到的内容。
 now open)
Fri Nov  9 16:44:34 [conn47] end connection 10.29.16.208:5306 (1 connection now open)
Fri Nov  9 16:45:04 [initandlisten] connection accepted from 10.29.16.208:5307 #48 (2 connections now open)
Fri Nov  9 16:45:04 [conn48] end connection 10.29.16.208:5307 (1 connection now open)
Fri Nov  9 16:45:04 [initandlisten] connection accepted from 10.29.16.208:5308 #49 (2 connections now open)
Fri Nov  9 16:45:04 [conn49] end connection 10.29.16.208:5308 (1 connection now open)
Fri Nov  9 16:45:34 [initandlisten] connection accepted from 10.29.16.208:5316 #50 (2 connections now open)
Fri Nov  9 16:45:34 [conn50] end connection 10.29.16.208:5316 (1 connection now open)
Fri Nov  9 16:45:34 [initandlisten] connection accepted from 10.29.16.208:5317 #51 (2 connections now open)
Fri Nov  9 16:45:34 [conn51] end connection 10.29.16.208:5317 (1 connection now open)
Fri Nov  9 16:46:04 [initandlisten] connection accepted from 10.29.16.208:5320 #52 (2 connections now open)
Fri Nov  9 16:46:04 [conn52] end connection 10.29.16.208:5320 (1 connection now open)
Fri Nov  9 16:46:04 [initandlisten] connection accepted from 10.29.16.208:5321 #53 (2 connections now open)
Fri Nov  9 16:46:04 [conn53] end connection 10.29.16.208:5321 (1 conn

3
我认为这与编程本身没有关系,建议你在http://serverfault.com/上提出这个问题。 - cimnine
2
我也遇到了同样的问题。这是因为Mongo无法在C:/data/db中创建文件夹。我按照这个教程http://www.mkyong.com/mongodb/how-to-install-mongodb-on-windows/进行操作。 - STEEL
当我在我的公司笔记本电脑上安装MongoDB到C盘时,我遇到了相同的错误。由于管理员权限以及每次在C盘安装或修改任何内容时都需要输入管理员用户名和密码,这就是我无法使mongodb工作的原因。在D盘上安装后,一切正常运行。 - panza
一个主机别名可能会阻止访问127.0.0.1;如果你使用Ubuntu(或任何其他Linux发行版),请尝试打开/etc/hosts文件,查看是否有针对127.0.0.1的别名,并将其注释掉。保存主机文件,重新启动计算机,然后尝试再次启动mongod服务(sudo systemctl start mongod)。 - Arthur Zennig
我的问题是一个垃圾清理软件“Clean My Mac”。它停止了Mongo服务器和它的缓存。 - Faizan Pasha
46个回答

321

通常出现这个问题是因为在启动mongo shell之前您没有启动mongod进程。

启动mongod服务器。

mongod

打开另一个终端窗口

启动Mongo shell

mongo

4
这个案例对我很有帮助,我需要执行命令 ~>sudo mongod --dbpath /dbpathlocation 然后打开新的终端来运行mongo... - Saji
5
在 macOS Sierra 上对我有效的方法是运行 sudo mongod 然后执行 mongo - Amin Jafari
在运行mongod之前,我必须创建一个/data/db目录。 - College Student
我简直不敢相信,我只需要在后台或另一个 shell 中运行 mongod,然后再运行 mongo。向 Ravi Hamsa 大声喊话! - KareemJ

104

已解决。

以下4个步骤可解决此问题。

1)删除.lock文件

sudo rm /var/lib/mongodb/mongod.lock 

2)修复MongoDB。

mongod -–repair

3) 启动mongod服务器

sudo service mongod start 

4)启动Mongo客户端

mongo

点击此处了解更多详情。

点击此处了解更多技术错误信息。


4
想知道一下,/var/lib/mongodb/mongod.lock是什么,它出了什么问题? - ozn
2
Ubuntu 18.04中的第2项是 mongod --repair - Aline Matos
1
这个答案需要严重更新,两个链接都无法使用并显示“404未找到”。 删除.lock文件的第一步不是推荐的做法。我刚刚失去了所有的数据。 请参考:https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/#id1 - Afroz Chakure
在我的情况下没有起作用。显示相同的错误。我已经使用netstat进行了检查,但端口27017未被使用。 - Aditya Gaddhyan
MACOS的路径是什么? - Menai Ala Eddine - Aladdin
@MenaiAlaEddine-Aladdin 我猜你的问题可能已经解决了,但是对于未来的访问者来说,通常是 /tmp/mongodb-27017.sock。可以通过运行 mongod 来查看路径和确切的错误。希望这能帮助到某些人。 - Fr0zenFyr

64

如果您想在不保留原始文件的情况下修复数据文件,则可以使用此方法。

要找到您的dbpath所在位置- vim /etc/mongodb.conf

检查选项dbpath=

(我的dbpath=/var/lib/mongodb)

默认值:/data/db/

典型的位置包括:/srv/mongodb、/var/lib/mongodb或/opt/mongodb。

/var/lib/mongodb替换为您的dbpath

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --dbpath /var/lib/mongodb/ --repair
sudo mongod --dbpath /var/lib/mongodb/ --journal

请确保您不要关闭之前运行上述命令的终端, 不要按'Ctrl+c'或者退出它。 在另一个窗口中输入启动mongo的命令。

希望这对您有帮助! 对于那些想要在保留原始文件的同时修复数据文件的人, mongo recover


4
在Ubuntu上工作时,--journal修复了我的问题。它究竟是什么?--journal是什么意思? - grep
在我的 Fedora 20 上运行良好。现在我们可以关闭第一个终端窗口了吗? - Khayam Gondal
我正在使用Ubuntu 21.04,这对我很有效。 - Berkay Nayman

59

如果mongo shell无法与mongod服务器通信,您将看到此错误。

这可能是由于地址错误(主机或IP)或未运行。 值得注意的一点是日志跟踪未涵盖您的的 "Fri Nov 9 16:44:06"。

您能否:

  1. 提供用于启动mongod进程的命令行参数(如果有)
  2. 提供mongod启动时的日志文件活动以及尝试启动mongo shell期间的日志?
  3. 确认您的mongod进程正在与mongo shell相同的计算机上启动?

对于Windows用户:这个链接可以解决该错误。 - Abhishek

54

我是Windows用户,于2018年11月安装了MongoDB。当时我不想设置数据/数据库目录。但是几天后打开时,出现了错误信息:

MongoDB shell version v4.0.4
connecting to: mongodb://127.0.0.1:27017
2018-12-05T20:42:40.108+0530 E QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: No connection could be made because the target machine actively refused it. :
connect@src/mongo/shell/mongo.js:257:13
@(connect):1:6
exception: connect failed

后来我试着使用之前所有的答案来修复,但都没有成功。当我尝试运行mongod时,它会显示:

MongoDB starting : pid=12220 port=27017 dbpath=C:\data\db\ 64-bit host=bla

我尝试通过文件系统和命令行更改数据库路径(到程序文件夹),但都没有成功。

对我有效的解决方法是:

打开任务管理器(ctrl + shift + esc) ->服务选项卡,有一行 MongoDB 状态为已停止。然后右键单击并点击启动,一切正常工作:)


9
这对我有用。Windows 用户应该首先尝试这个。 - Zia
1
这个对我也起作用了。如果你有同样的问题,可以试一试。 - Rupak

42

MAC OS

检查状态

brew services list

类似于:

Name    Status  User Plist
mongodb stopped  

开始它

brew services start mongodb

再试一次

mongomongo --port 27017


2
对我没用。我已经挣扎了一个小时来处理这个MongoDB。哇!!! - Glenn Posadas

23

错误: 无法连接到服务器127.0.0.1:27017,连接尝试失败: SocketException: 连接127.0.0.1:27017时出错 :: caused by :: 由于目标计算机积极拒绝,无法建立连接。

这个错误是因为Mongo数据库服务已关闭导致的。

按照以下简单步骤操作:

  1. 打开任务管理器
  2. 进入 > 服务
  3. 找到 MongoDB
  4. 右键单击并选择 启动

17

在我的情况下:

首先我打开配置文件。

sudo vi /etc/mongodb.conf

像这样评论IP和端口

#bind_ip = 127.0.0.1
#port = 27017

然后重新启动mongodb

sudo service mongodb restart
sudo service mongod restart

终于,它工作了 :D

finn@Finn ~ $ mongo
MongoDB shell version: 2.4.9
connecting to: test
> exit

移除 IP/端口并没有对我起作用,实际上还让服务器出现更多问题。服务拒绝重新启动... - Cerin
2
小心使用bind_ip。如果你注释掉它,那么远程连接就可以访问你的数据库,这显然是一个可怕的想法,除非你已经设置了安全和认证。我相信MongoDB默认没有用户或密码,所以你需要注意这一点。 - agm1984
对我也起作用,但在@agm1984的评论之后不知道安全性如何,我将只在开发模式下使用它,然后我将使用Mongodb的Atlas Cloud,在我的情况下更安全(因为我的服务器技能太差了:D)。 - Adrien V
1
@AdrienV 当然,如果您删除本地IP绑定,这是有风险的,因为它将允许从互联网访问。这只是开发服务器的一种解决方法。 - Finn
bind_ip被设置为一个未知的附加IP。删除它解决了/db/data错误...呼! - zevero

17

回答有点晚,但我也遇到了同样的问题。

以下是帮助我的步骤:

  1. 进入 C:\
  2. 创建 "data" 文件夹
  3. 在 "data" 中创建 "db" 文件夹
  4. 打开终端(CMD)-> 进入 EX:“c:\MongoDB\Server\3.4\bin
  5. 输入 mongod => 这将启动 mongo 服务器(保持打开状态)

使用 GUI 运行,例如 "robomongo"

或者

打开新终端(CMD)-> 进入 EX:“c:\MongoDB\Server\3.4\bin”,输入 "mongo" 命令


完美,它适用于那些在 Windows 上使用 mongo 的人,非常感谢您。 - Abubakar

16

确保你的MongoDB正在运行。

我通过尝试修复MongoDB来解决了这个问题,发现需要运行的数据库所需的目录未被创建。它会显示以下错误:

输入 mongod 命令,将显示以下错误:

exception in initAndListen: 29 Data directory /data/db not found., terminating

错误是由于默认配置的dbpath为/data/db/(默认配置)不存在导致的。您需要创建数据文件夹并设置其权限。

然后我通过命令在系统上创建了一个文件夹:

sudo mkdir -p /data/db/sudo chown id -u /data/db

然后我再次运行MongoDB,它就工作了。


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