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

Posted

技术标签:

【中文标题】mongo - 无法连接到服务器 127.0.0.1:27017【英文标题】:mongo - couldn't connect to server 127.0.0.1:27017 【发布时间】:2012-10-30 00:37:14 【问题描述】:

我来自 riak 和 redis,我从未遇到过启动或交互此服务的问题。

这是 mongo 的普遍问题,我相当无能。重新启动没有帮助。我是 mongo 的新手。

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

【问题讨论】:

由于 IMO 这与编程本身无关,我建议您在 serverfault.com 上提出这个问题。 我也遇到了同样的问题。它的 cus mongo 无法在 C:/data/db 中创建文件夹我遵循了这个 tut mkyong.com/mongodb/how-to-install-mongodb-on-windows 我在使用公司笔记本电脑并在 C: 上安装 MongoDB 时遇到了同样的错误。由于管理权限以及每次我在 C: 中安装或修改任何内容时都会提示我使用管理员用户名和密码这一事实,这就是我无法让 mongodb 工作的原因。在 D: 上安装后,一切正常。 主机别名可能会干扰对 127.0.0.1 的访问;如果您使用的是 Ubuntu(或任何其他 linux 发行版),请尝试打开 /etc/hosts 并查看是否有 127.0.0.1 的别名并将其注释掉。保存主机文件,重新启动计算机并尝试再次启动 mongod 服务(sudo systemctl start mongod)。 【参考方案1】:

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

这可能是因为地址错误(主机或 IP)或者它没有运行。需要注意的一件事是提供的日志跟踪不包括您的mongo timestamp 的“Fri Nov 9 16:44:06”。

你能:

    提供用于启动您的命令行参数(如果有) mongod进程 提供来自 mongod 启动的日志文件活动以及 mongo shell 启动尝试期间的日志? 确认您的 mongod 进程正在同一台上启动 machine 作为 mongo shell?

【讨论】:

对于 windows 用户:This 将解决错误。【参考方案2】:

已解决。

这个问题可以通过下面提到的4个步骤来解决

1) 删除 .lock 文件

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

2) 修复 mongodb

mongod -–repair

3) 启动mongod服务器

sudo service mongod start 

4) 启动mongo客户端

mongo

更多详情请查看http://shakthydoss.com/error-couldnt-connect-to-server-127-0-0-127017-srcmongoshellmongo-js-exception-connect-failed/

http://shakthydoss.com/technical/error-couldnt-connect-to-server-127-0-0-127017-srcmongoshellmongo-js-exception-connect-failed/

【讨论】:

只是想知道,/var/lib/mongodb/mongod.lock 是什么,它出了什么问题? Ubuntu 18.04 中的第 2 项是 mongod --repair 这个答案需要认真更新,两个链接都不起作用并给404 not Found。删除 .lock 文件的第一步不是推荐的做法。我刚刚丢失了所有数据。请参考:docs.mongodb.com/manual/tutorial/… 在我的情况下不起作用。显示相同的错误。我已经使用 netstat 进行了检查,但端口 27017 未在使用中 MACOS的路径是什么?【参考方案3】:

此方法仅适用于修复数据文件而不保留原始文件

要查找您的 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

【讨论】:

在 ubuntu 上工作。 --journal 解决了我的问题。它的真正作用是什么? --journal 是干什么用的? 在 Fedora 20 上为我工作。我们现在可以关闭第一个终端窗口吗?【参考方案4】:

这通常是因为您在尝试启动 mongo shell 之前没有启动 mongod 进程。

启动mongod服务器

mongod

打开另一个终端窗口

启动 mongo shell

mongo

【讨论】:

这个案例解决了我,我不得不这样做~>sudo mongod --dbpath /dbpathlocation 然后打开新终端运行mongo... 在 macOS Sierra 上对我有用的是 sudo mongod,然后是 mongo 我必须在运行 mongod 之前创建一个 /data/db 目录 我不敢相信我所要做的就是在运行mongo 之前在后台或另一个shell 中运行mongod。大声喊叫Ravi Hamsa!.【参考方案5】:

删除 mongod.lock 文件。并运行“mongod -repair”。卸载/重新安装 mongod 服务为我解决了这个问题。

谢谢。

【讨论】:

【参考方案6】:

如果上述所有解决方案都不起作用:转到服务(start>search>services)并启动 mongodb 服务。然后,在cmd提示符下,进入bin后,输入:/>mongo

【讨论】:

【参考方案7】:

我在 AWS EC2 上连接到 Mongo 时遇到了同样的错误。这就是解决它的方法 https://serverfault.com/a/347159/62381 从配置文件中删除 bind_ip

【讨论】:

【参考方案8】:

这对我有用:-

在 Mongo 3.2 for window 中,你应该启动 Mongodb 服务。所以,运行Command Prompt as Administrator 然后net start MongoDB

【讨论】:

【参考方案9】:

就我而言:

首先我打开配置文件

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/端口对我不起作用。它实际上更破坏了服务器。服务拒绝重新启动备份... 小心 bind_ip。如果您将其注释掉,它将允许远程连接到您的数据库,这显然是一个糟糕的主意,除非您有安全和身份验证设置。我相信MongoDB默认没有用户或密码,所以你需要注意这一点。 也为我工作,但在@agm1984 的评论之后不知道安全性,我将在开发模式下使用它,然后我将使用 Mongodb 的 Atlas Cloud,在我的应用程序中更安全我认为的情况(以我糟糕的服务器技能:D) @AdrienV 当然,如果您删除本地 IP 绑定是有风险的,因为它将允许从 Internet 访问。这只是开发服务器的一种解决方法。 bind_ip 被设置为一个额外的未知 ip。删除它解决了 /db/data 错误... ufff【参考方案10】:

另一种解决方案为我解决了同样的错误,尽管这可能仅适用于您通过虚拟机(至少这是我的设置)通过 SSH 连接访问 mongo(本地),并且可能是特定于 linux 的环境变量问题:

export LC_ALL=C

另外,我在运行 mongo 作为守护程序服务方面取得了更大的成功,然后使用 sudo 服务启动,我的理解是这使用命令行参数而不是配置文件,所以它可能是我的配置文件的问题:

mongod --fork --logpath /var/log/mongodb.log --auth --port 27017 --dbpath /var/lib/mongodb/admin

【讨论】:

【参考方案11】:

确保您的 mongo 正在运行。 我通过尝试修复 mongodb 解决了这个问题,在那里我发现没有创建 db 运行所需的目录。它显示了这个错误

输入: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

然后我再次运行 mongo 并且它起作用了。

【讨论】:

【参考方案12】:

最后我明白了这是一个简单的方法..

打开终端并转到 mongodb 位置。在我的情况下是

e:\mongodb\bin> 

然后键入以下命令并按回车键..

mongod --config e:\mongodb\mongo.config

打开另一个终端并使用 mongodb 启动

mongo.exe

就是这样..你可以使用 mongo

【讨论】:

【参考方案13】:

如果您的计算机上尚不存在文件夹 C:data/db,请创建该文件夹。原来MongoDB需要存在这个文件夹结构'data/db'才能运行。我希望这对某人有所帮助。

【讨论】:

【参考方案14】:

要连接 mongo,我们必须首先启动“mongod”服务。 您可以看到以下输出:

$ mongod
2017-03-05T00:31:39.055+0530 I CONTROL  [initandlisten] MongoDB starting : pid=1481 port=27017 dbpath=/data/db 64-bit host=Prabhu-Nandans-Mac.local
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten] db version v3.4.2
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten] git version: 3f76e40c105fc223b3e5aac3e20dcd026b83b38b
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2k  26 Jan 2017
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten] allocator: system
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten] modules: none
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten] build environment:
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten]     distarch: x86_64
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2017-03-05T00:31:39.056+0530 I CONTROL  [initandlisten] options: 
2017-03-05T00:31:39.056+0530 W -        [initandlisten] Detected unclean shutdown - /data/db/mongod.lock is not empty.
2017-03-05T00:31:39.057+0530 I -        [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2017-03-05T00:31:39.057+0530 W STORAGE  [initandlisten] Recovering data from the last clean checkpoint.
2017-03-05T00:31:39.057+0530 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=3584M,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-03-05T00:31:39.620+0530 I CONTROL  [initandlisten] 
2017-03-05T00:31:39.620+0530 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-03-05T00:31:39.620+0530 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-03-05T00:31:39.620+0530 I CONTROL  [initandlisten] 
2017-03-05T00:31:39.620+0530 I CONTROL  [initandlisten] 
2017-03-05T00:31:39.620+0530 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2017-03-05T00:31:39.643+0530 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2017-03-05T00:31:39.643+0530 I NETWORK  [thread1] waiting for connections on port 27017
2017-03-05T00:31:40.008+0530 I FTDC     [ftdc] Unclean full-time diagnostic data capture shutdown detected, found interim file, some metrics may have been lost. OK
2017-03-05T00:32:03.832+0530 I NETWORK  [thread1] connection accepted from 127.0.0.1:49806 #1 (1 connection now open)
2017-03-05T00:32:03.833+0530 I NETWORK  [conn1] received client metadata from 127.0.0.1:49806 conn1:  application:  name: "MongoDB Shell" , driver:  name: "MongoDB Internal Client", version: "3.4.2" , os:  type: "Darwin", name: "Mac OS X", architecture: "x86_64", version: "16.4.0"  
2017-03-05T00:32:08.376+0530 I -        [conn1] end connection 127.0.0.1:49806 (1 connection now open)

然后打开另一个终端并输入“mongo”。

以下是你可以看到的输出:

$ mongo
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2

你的问题解决了 :)

【讨论】:

【参考方案15】:

这是一个老问题,但是,作为一个新手,我想我会补充一点(使用 Webstorm),您需要单击 Mongo Explorer(窗口最右侧的选项卡)。从那里:

-点击设置。 - 单击浏览按钮(看起来像一个带有“...”的按钮)。 - 转到 Program Files > MongoDB > Server > 3.4 > bin > mongo.exe(您的版本可能与 3.4 不同) - 之后,单击右侧的绿色加号。将打开一个窗口 - 在“标签”插槽中输入名称。 -点击应用。

您现在应该已连接。在终端中输入“mongod”是不够的。您还必须执行上述步骤。

我提前向那些没有使用 Webstorm 的人道歉!不确定使用其他 IDE 的步骤。

【讨论】:

【参考方案16】:

如果你通过 brew 安装(在 osx 上) 第一次运行sudo mkdir /data/db 通过键入mongod(保持打开状态)启动 mondoDB 守护程序,然后 通过在新终端选项卡中键入 mongo 来运行 mongo

【讨论】:

【参考方案17】:

我的原因是空间 - 在控制台中运行:

df -h

或更具体地:

du -hs /var/lib/mongodb/ 

检查他的磁盘使用情况。如果它是 ~ 99% - 只需清理一些空间并重试!

【讨论】:

【参考方案18】:

答案有点晚了,但我遇到了同样的问题

以下是对我有帮助的步骤。

    转到 C:\ 创建“数据”文件夹 在“data”中创建“db”文件夹 打开终端 (CMD) -> 转到 EX:"c:\MongoDB\Server\3.4\bin" 输入 mongod => 这将启动 mongo 服务器(保持打开状态)

使用 GUI 运行,EX "robomongo"

或者

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

【讨论】:

非常适合那些在 Windows 上使用 mongo 的人,非常感谢先生【参考方案19】:

首先,到c:\mongodb\bin>开启mongoDB,如果在控制台看到mongo正在监听27017端口,就OK了 如果没有,请关闭控制台并创建文件夹 c:\data\db 并再次启动 mongod

【讨论】:

【参考方案20】:

只需在 C 盘中创建一个名为“data”的文件夹,然后在 data 文件夹中创建另一个名为“db”的文件夹。然后执行 mongod.exe :)

【讨论】:

是什么让你认为提问者有 Windows 或安装 MongoDB 失败?【参考方案21】:

首先,您必须启动 mongod 服务器,然后在另一个终端中您必须启动 mongo shell。

用于启动,mongo 服务器

1.如果你的路径是默认路径(data/db) 在终端中简单地触发 mongod

2. 如果你的路径不是 data/db 那么你的命令就像 跟随: mongod --dbpath '你的路来了' .

为了启动 mongo shell, 只需在另一个终端中触发 mongo

如果您得到这个等待端口 27017 上的连接,那么您的 mongo 已成功启动。

希望你能明白我的意思

【讨论】:

【参考方案22】:

你可以试试下面的命令:

sudo service mongod start

【讨论】:

差不多了,但如果你已经安装了 brew 那么它将无法工作。你必须做'sudo brew services start mongodb-community'【参考方案23】:

今天发生在我身上,我通过以下方式解决了它。

机器:我使用的是 Windows 10 机器并下载了最新的 MongoDB - 社区版。

所以,问题是,我没有创建 C:\data\db

没有创建C:\data\db,我打开CMD终端并在终端使用mongod命令启动数据库

C:\YourInstallationPath\bin>mongod

当我触发 mongo 命令时,我遇到了问题。

Twist,我创建了必要的文件夹,但仍然遇到问题。这是因为 mongo 服务器已经在运行。为了修复它,我再次启动了mongod 命令,它自动引用了C:\data\db

其他用户建议添加C:\data\db,但没有说再次执行mongod,这正好解决了我的问题。

【讨论】:

对于那些在 Mac-OS 上使用 brew 安装 mongodb-community 的人试试这个。 brew services start mongodb-communitybrew services restart mongodb-community 对于那些已经启动服务的人【参考方案24】:

如果上述所有解决方案都无法解决,那么这可能会有所帮助。在某个地方,您可能已经通过 vagrant box 连接到本地 mongodb 数据库。

    vagrant up 然后 ssh 进入你已经与 mongodb 建立连接的 vagrant 机器(vagrant ssh vagrant_box_name) 使用 # (sudo nano /etc/mongod.conf ) 注释掉 /etc/mongod.conf 中的 bind_ip 行 重启你的mongodb守护服务(sudo service mongod restart) 瞧……

【讨论】:

【参考方案25】:

我有同样的问题,我删除了 E:\Mongo Data Files\db\mongod.lock 文件,所以它开始工作了。问题是由于服务器关闭不当造成的。所以锁文件不干净。

【讨论】:

【参考方案26】:

我也有同样的问题,然后我被这两行代码解决了。希望对你有帮助

systemctl start mongod
systemctl enable mongod

【讨论】:

解决了我的问题!【参考方案27】:

@shakthydoss 的答案曾经运行良好,但在第二个问题之后 .lock 不存在,我只是创建了一个空白的,它运行良好。所以检查一下你的不在那里。

如果你使用的是命令行:

cd /var/lib/mongodb

ls

"ls" 将列出文件夹中的所有文件,如果 mongod.lock 不存在,则:

sudo touch mongod.lock

最后运行命令。

mongod –-repair

sudo service mongod start 

Mongo 服务应该可以正常工作。

【讨论】:

【参考方案28】:

在 Windows 操作系统上解决此问题的步骤:

    C:\Program Files\MongoDB\Server\4.0\data 中删除 mongod.lock 文件 点击C:\Program Files\MongoDB\Server\4.0\bin中的mongod 点击C:\Program Files\MongoDB\Server\4.0\bin中的mongo启动mongodb shell

【讨论】:

【参考方案29】:

我是 Windows 用户,我在 2018 年 11 月安装了 MongoDB,我不想设置 data/db 目录。但是几天后,当我打开时,收到一条错误消息:

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

我尝试通过文件系统更改数据库路径(到程序文件)并使用 cmd 但这些都不起作用。

对我有用的解决方案是:

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

【讨论】:

这对我有用。 Windows 用户应该先试试这个 这个也对我有用。如果你有同样的问题,试一试......【参考方案30】:

MAC 操作系统

查看状态

brew services list

类似:

Name    Status  User Plist
mongodb stopped  

开始

brew services start mongodb

再试一次

mongomongo --port 27017

【讨论】:

对我不起作用。我一直在努力处理这个 MongoDB 一个小时。哇!!!

以上是关于mongo - 无法连接到服务器 127.0.0.1:27017的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上的本地 Mongo - 无法连接到服务器 127.0.0.1:27017,连接尝试失败

将 Django 与 Docker 一起使用时出错 - “无法连接到 '127.0.0.1' (111) 上的 MySQL 服务器”)

无法连接到“127.0.0.1”上的 MySQL 服务器 (10061) (2003)

mysql工作台未与mac上的localhost连接,无法连接到'127.0.0.1(49)上的MySQL服务器[关闭]

在 Mac 上无法连接到“127.0.0.1”(61)上的 MySQL 服务器

MongoNetworkError:第一次连接时无法连接到服务器 [localhost:27017] [MongoNetworkError: connect ECONNREFUSED 127.0.0.