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

Posted

技术标签:

【中文标题】MongoNetworkError:第一次连接时无法连接到服务器 [localhost:27017] [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]【英文标题】:MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017] 【发布时间】:2018-10-14 19:58:36 【问题描述】:

我是 nodeJS 的新手,通过 youtube 上的预告片开始学习,一切都很顺利,直到我添加了 mongodb 的连接功能,

mongo.connect("mongodb://localhost:27017/mydb")

当我在 cmd (node start-app) 上运行我的代码时,得到以下错误,

MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]

谁能解释我错过了哪一步? 我的代码:

var express = require("express");
var MongoClient = require('mongodb');
var url = "mongodb://localhost:27017/mydb";
var webService = require("./webService");
var server = express();

MongoClient.connect(url, function (err, db) 
    if (err) throw err;
    console.log("Database created!");
    db.close();
);

server.use(express.urlencoded( extended: true ));

server.set('views', __dirname);

server.get('/', function (request, response) 
    response.sendFile(__dirname + '/MainPage.html');
);

server.get('/Sign', function (request, response) 
    response.render(__dirname + '/Sign.ejs');
);

server.post("/signUp", webService.signUp);

server.post("/createUser", webService.createUser);

server.listen(5500);

【问题讨论】:

您可能已经安装了 MongoDB,但它肯定没有运行。你真的应该检查那些安装说明,并确保你可以在做任何其他事情之前从 mongo shell 连接。为了清楚起见,我们在同一页面上npm install mongodb 不是我们在这里谈论的内容。我们实际上是在为您的平台“安装服务器”。 【参考方案1】:

他们中的许多人没有添加这个,尤其是在 AWS EC2 实例中,我遇到了同样的问题并尝试了不同的解决方案。 解决方案:我在代码中的一个数据库 URL 缺少这个参数“authSource”,添加这个对我有用。

mongodb://myUserName:MyPassword@ElasticIP:27017/databaseName?authSource=admin

【讨论】:

这救了我的命...好几天来一直在想办法解决这个问题。 ?authSource=admin 是为我做的!!!! This是authSource的意思【参考方案2】:

您必须先在系统中安装MongoDB 数据库服务器并启动它。

使用以下链接安装MongoDB

https://docs.mongodb.com/manual/installation/

如果您安装了 MongoDB,请检查服务器是否处于哪个状态(启动/停止)。尝试通过 mongo shell 客户端连接。

【讨论】:

【参考方案3】:

在尝试了谷歌针对堆栈溢出提出的所有解决方案之后,我发现了我的特殊问题。 我很久以前编辑了我的 hosts 文件,以便我可以从我的 virtualbox 访问我的 localhost。

删除此条目为我解决了这个问题,以及从上述解决方案中给出的链接正确安装 mongoDB,并包括正确的承诺处理代码:

mongoose.connect('mongodb://localhost/testdb').then(() => 
console.log("Connected to Database");
).catch((err) => 
    console.log("Not Connected to Database ERROR! ", err);
);

【讨论】:

【参考方案4】:

我遇到了同样的问题,但经过很多 RND。我发现问题出在哪里,所以在你的终端上运行这个命令。

sudo service mongod start

然后在终端上运行 mongo

【讨论】:

【参考方案5】:

您的 IP 地址可能已更改。

如果您最近重新启动了调制解调器,这会更改您的 IP,该 IP 可能已在 Atlas 上列入白名单。

太棒了,您需要跳回 Atlas 并将您的新 IP 地址添加到安全>网络访问下的白名单中。

【讨论】:

【参考方案6】:

遵循上述@CoryM 回答背后的逻辑:

在尝试了谷歌针对堆栈溢出提出的所有解决方案之后,我发现了我的特殊问题。很久以前我编辑了我的主机文件,以允许我从我的虚拟机访问我的本地主机。

删除此条目为我解决了它...

2 个月前,我也为 Python 机器学习设置编辑了我的 hosts 文件。因此,我没有删除它,因为我仍然需要它,而是使用 127.0.0.1 代替 localhost 并且它起作用了:

mongoose.connect('mongodb://127.0.0.1/testdb')

【讨论】:

【参考方案7】:

这发生在我身上,我发现这是因为互联网连接故障。如果我在我的地方使用公共 wifi,出于安全原因阻止了各种网站,Mongo 拒绝连接。但如果我使用自己的移动数据,我可以连接到数据库。

【讨论】:

如果您在安全 > 网络访问 > IP 白名单下将您的 IP 地址列入白名单,然后尝试从不同的 IP 地址连接,Mongo 将阻止连接。这是一项安全功能,可确保只有受信任的 IP 才能连接到数据库。您只需要转到 Mongo DB Atlas 站点的上述部分,然后将您当前的 IP 地址(永久或临时)添加到白名单或临时允许从任何地方访问(即所有 IP 地址为 0.0.0.0/0)。出于明显的安全原因,不建议您永久允许从任何地方访问。【参考方案8】:

如果已经安装了 mongoDB 服务器,并且无法从远程主机连接,请按照以下步骤操作,

登录到你的机器,打开位于/etc/mongod.conf 的mongodb配置文件并将bindIp字段更改为特定的ip / 0.0.0.0,然后重启mongodb服务器。

    sudo vi /etc/mongod.conf

该文件应包含以下类型的内容:

  systemLog:
      destination: file
      path: "/var/log/mongodb/mongod.log"
      logAppend: true
  storage:
      journal:
          enabled: true
  processManagement:
      fork: true
  net:
      bindIp: 127.0.0.1  // change here to 0.0.0.0
      port: 27017
  setParameter:
      enableLocalhostAuthBypass: false

一旦你更改了bindIp,那么你必须重启mongodb,使用以下命令

  sudo service mongod restart

现在您可以从远程服务器连接到 mongodb 服务器了。

【讨论】:

【参考方案9】:

如果一切都已设置好,如安装 mongo db 和客户端,如 mongoose,只需在基本文件夹的终端中运行 mongod。运行命令后,运行您正在处理的项目文件,然后应该不会出现错误。

【讨论】:

【参考方案10】:

您可以通过运行此命令检查错误的详细信息

sudo service mongod status

如果错误是这样的

无法取消链接套接字文件 /tmp/mongodb-27017.sock 未知错误 src/mongo/transport/transport_layer_asio.cpp 670 处的致命断言 40486

只需运行此程序即可解决您的问题

rm /tmp/mongodb-27017.sock

【讨论】:

【参考方案11】:

我在当地的星巴克工作时遇到了这个问题,我记得当我最初通过 Mongo Atlas 设置我的数据库时。我设置了我的 IP 地址以便能够访问数据库。在查看了几个线程后,我在 Atlas 上更改了我的 IP 地址,问题就消失了。希望这可以帮助某人。

【讨论】:

【参考方案12】:

我不知道这是否有帮助,但是当我这样做时它起作用了:

终端中的命令mongo

然后我复制了 mongo 命令返回的 URL,类似于

mongodb://127.0.0.1:*port*

我在我的 JS 代码中用这个替换了 URL。

【讨论】:

为什么每个单词的首字母都大写?读起来很累。 哦! :-(但我对大写很满意 ***.com/help/how-to-ask --> “拼写、语法和标点符号很重要!记住,这是其他人会看到的问题的第一部分——你想给人留下好印象。如果你不是用英文写作很舒服,请朋友为你校对。”【参考方案13】:

首先通过命令行 mkdir C:\data\db 创建文件夹(这是用于数据库的) 然后通过一个命令提示符(管理模式)运行命令 mongod --port 27018 - 您可以根据需要提供名称端口号

【讨论】:

【参考方案14】:

我的问题是mongoDB 服务器的端口号错误。

我有:

DATABASE_URL= "mongodb://localhost:3000/node-express-mongodb-server"

在我的.env 文件(我的环境变量)中,但我在运行mongoDB server 之前已经编写了它。所以当我运行mongoDB server 时,它写了一个不同的端口号,我不得不更改它。我将其更改为正确的端口号(mongoDB 在我的 cmd 窗口中写入):

DATABASE_URL= "mongodb://localhost:27017/node-express-mongodb-server"

现在它可以正常工作了。

【讨论】:

【参考方案15】:

因此,当上述解决方案都不适合我时,在正确安装所有内容后,我想重新启动系统

现在可以了。

请注意,我做了上面所说的一切,但没有运气。唯一的重启对我有用。!! 您可能还想重新启动一次。

【讨论】:

【参考方案16】:

1) 如果你还没有安装 mongodb,请安装它。

2) 打开一个新终端,输入“mongo”。这会将您连接到在本地主机上运行的 MongoDB 实例,默认端口为 27017:

【讨论】:

【参考方案17】:
mongoose.connect('mongodb://localhost:27017/').then(() => 
console.log("Connected to Database");
).catch((err) => 
console.log("Not Connected to Database ERROR! ", err);
);

最好只连接到 localhost Mongoose 数据库并创建您自己的集合。不要忘记提及端口号。 (默认:27017)

为了获得最佳视图,请下载 Mongoose-compass for MongoDB UI。

【讨论】:

您的代码与***.com/a/50955506/6174449 非常相似,如果不是重复,请在您的代码上方解释一下。【参考方案18】:

这个帮助了我。 尝试创建一个新文件夹,如果您的 MongoDB 安装在 C:\Program Files 中,则该文件夹应称为 db 并位于文件夹 data 中。 C:\data\db

当您启动 mongod 时,应该有一个日志,其中 db '未找到'。

【讨论】:

【参考方案19】:

我连接到 *** 并完成连接。我使用的是学校的 WiFi,显然有一些限制。

【讨论】:

【参考方案20】:

这对我有用。

mongoose.Promise = global.Promise;
  .connect(
    "mongodb://127.0.0.1:27017/mydb",
     useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true).then(db => 
      console.log("Database connected");
    ).catch(error => console.log("Could not connect to mongo db " + error));

我使用的是localhost,所以我将其更改为:

mongodb://127.0.0.1:27017/mydb

【讨论】:

【参考方案21】:

我猜你一定是连接到 cloud.mongodb.com 到你的集群。

一个快速解决方法是转到连接选项卡并添加您当前的 IP 地址(在浏览器或桌面应用程序的集群门户中)。 IP地址一定是因为各种原因发生了变化,比如换了wifi。

试试这个方法,当我遇到这个错误时它对我有用。

【讨论】:

【参考方案22】:

我的情况有点不同。重新启动系统后,我在进行本地开发时没有将我的 IP 地址列入 Mongo 的白名单。

Select Network Access > Add IP Address > Add your current IP Address

【讨论】:

【参考方案23】:

您的防火墙阻止了用于连接 MongoDB 的端口 27017。

尝试找出您的系统中正在使用的防火墙, 例如在我的情况下是 csf, 配置文件放置在

/etc/csf/csf.conf

如下找到 TCP_IN 和 TCP_OUT 并将端口 27017 添加到允许的传入和传出端口

# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2222,27017"

# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995,2222,27017"

保存配置文件并重新启动 csf 以应用它:

csf -r

【讨论】:

【参考方案24】:

如果您在 .msi 安装程序上安装了 mongo,这可能会对某人有所帮助。请打开软件并选择修复而不是安装并重试,这对我有用。

【讨论】:

【参考方案25】:

您必须先在系统中安装 MongoDB 数据库服务器并启动它。

Use the below link to install MongoDB

如果您已经在系统中安装了 MongoDB 数据库,那么您必须通过以下步骤检查您的数据库是否处于起始位置:

    按 CTRL + Shift + Esc 转到服务选项卡并搜索 Mongo 检查状态 - 它可能已停止。所以点击右下角的Services选项卡,再次搜索MongoDB 单击它并通过右键单击或在左侧面板中启动数据库。

【讨论】:

【参考方案26】:

您的节点版本已升级。所以请按照以下步骤进行

    安装 nvm 并安装旧版本的节点,例如。 nvm i 16.12.0 nvm 使用 16.12.0

nvm 的有用命令

可用的 nvm 列表(将显示可用的节点版本)

【讨论】:

【参考方案27】:

如果在 macbook 上发生错误,请运行此命令以保持 mongodb 服务器运行。

mongod --config /usr/local/etc/mongod.conf --fork

问题主要是您的 mongodb 服务器拒绝连接,这可能是服务器未打开/未激活,即使它已安装在您的 macbook 上。

【讨论】:

【参考方案28】:

如果在Mongodb 之前安装,请从以下代码开始:

brew services start mongodb-community
next => mongod

如果在此之前未安装

1.brew tap mongodb/brew
2.brew install mongodb-community
3.brew services start mongodb-community
4.mongod

【讨论】:

【参考方案29】:

您需要先初始化您的 mongoDB 数据库,您可以在终端中运行“mongod”,然后它就可以正常工作了。

【讨论】:

【参考方案30】:

只需在您的系统上安装 MongoDB。而已。

【讨论】:

这没有提供问题的答案。请注意,这个问题已经有一个公认的答案。请edit您的答案,以确保它改进了此问题中已经存在的其他答案。

以上是关于MongoNetworkError:第一次连接时无法连接到服务器 [localhost:27017] [MongoNetworkError: connect ECONNREFUSED 127.0.0.的主要内容,如果未能解决你的问题,请参考以下文章

MEAN STACK APP部署HEROKU问题 MongoNetworkError: failed to connect to server

UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [localhost:27017] o

YAPI内网部署问题:MongoNetworkError: Authentication failed., mongodb Authentication failed

JAVA 在JTextArea使用BufferedReader读取文件后,从每行结尾开始删除字符,按第一次时无任何字符删除

单位使用的客户端程序与SQL2005连接时无反应,重新配置客户端INI文件后提示无效的授权说明,请高手帮忙。

MongoDB Atlas 连接不断下降