MongoNetworkError: 在第一次连接时未能连接到服务器[ localhost: 27017][ MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]

我是 nodeJS 的新手,通过跟踪 youtube 上的一个预告片开始学习,一切都很顺利,直到我添加了 connect 函数 if 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);
284977 次浏览

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

使用以下链接安装 MongoDB

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

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

在尝试谷歌提出的每一个解决方案堆栈溢出,我发现我的特殊问题是什么。我编辑了接待员文件允许我从我的虚拟机访问我的本地主机。

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

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

我想到了这一点,我发现这是因为错误的互联网连接。如果我在家里使用公共无线网络,出于安全原因会屏蔽各种网站,Mongo 拒绝连接。但是如果我使用我自己的移动数据,我可以连接到数据库。

如果所有东西都像安装 mongodb 一样已经设置好了,那么只要在基本文件夹的终端中运行 mongodb,并像猫鼬一样为它安装客户端就可以了。在运行该命令之后,运行正在处理的项目文件,然后就不会出现错误。

首先通过命令行 mkdir C 创建文件夹: data db (这是用于数据库) 然后通过一个命令提示符(管理模式)运行命令 monGod —— port 27018——您可以根据自己的意愿给出名称端口号

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

sudo service mongod status

如果错误是这样的

  • 解除套接字文件/tmp/mongodb-27017. sock 未知错误
  • 致命断言40486 at src/mongo/Transport/Transport _ layer _ asio.cpp 670

只要运行这个就可以解决问题

rm /tmp/mongodb-27017.sock

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

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

我也遇到过同样的问题,但是在经历了很多 RND 之后。我发现了什么问题,所以在你的终端上运行这个命令。

Sudo 服务神起步

然后在终端上运行 Mongo

按照@CoryM 上述回答背后的逻辑:

在尝试谷歌提出的每一个解决方案堆栈溢出,我发现我的特殊问题是什么。很久以前,我编辑了我的主机文件,以允许我从我的虚拟机访问我的本地主机。

移除这个条目解决了我的问题。

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

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

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

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

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

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

Select Network Access > Add IP Address > Add your current IP Address
mongoose.connect('mongodb://localhost:27017/').then(() => {
console.log("Connected to Database");
}).catch((err) => {
console.log("Not Connected to Database ERROR! ", err);
});

最好只连接到本地主机猫鼬数据库并创建您自己的集合。别忘了提港口号。(默认值: 27017)

要获得最佳视图,请下载 MongoDB UI 的 Mongoose-Rome。

如果在 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

这个帮了我。 尝试创建一个新的文件夹,如果您的 MongoDB 安装在 C: Program Files 中,那么该文件夹应该被称为 db,并且位于一个文件夹数据中。 C: 数据库

当你开始修道士应该有一个记录在哪里的 db’不发现’。

只要在你的系统上安装 MongoDB 就可以了。

我连接了一个 VPN,连接完成了。我正在使用学校的无线网络,显然有一些限制。

这招对我很管用。

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

我不知道这是否有帮助,但当我这样做它工作:

命令 mongo进入终端。

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

mongodb://127.0.0.1:*port*

我在我的 JS 代码中将 URL 替换为这个。

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

一个快速修复方法是转到连接选项卡并添加当前 IP 地址(在浏览器或桌面应用程序的集群门户中) 。IP 地址必须已经改变,由于各种原因,如改变无线网络。

试试这个方法,当我得到这个错误时,它对我很有效。

你的 IP 地址可能改了。

如果您最近重新启动您的调制解调器,这将改变您的 IP,这可能是白名单上的阿特拉斯。

所以,您需要跳回到 Atlas,并将您的新 IP 地址添加到 Security > Network Access 下的白名单中。

你需要首先初始化你的 mongoDB 数据库,你可以在你的终端运行“ monGod”,然后它会工作得很好。

我的问题是 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"

现在好了。

如果 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 服务器。

你的防火墙屏蔽了连接 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

如果你把你的蒙哥装上,这个可能会有用。Msi 安装请打开软件,选择修复,而不是安装和尝试再次,这为我工作。

因此,当上述解决方案都不适合我的时候,在正确安装了所有东西之后,我想到了 重启系统

现在起作用了。

注意,我做了上面说的所有事情,但是没有运气。唯一的重启对我有用! 您可能还需要重新启动一次。

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

使用以下链接安装 MongoDB

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

  1. 按 CTRL + Shift + Esc
  2. 进入服务标签并搜索 Mongo
  3. 检查状态-它可能被停止。因此,单击右下角的 Services 选项卡,再次搜索 MongoDB
  4. 点击它,并通过右键单击或在左面板启动数据库。

您的节点版本已升级。请按照下面的步骤操作

  1. 安装
  2. 并安装老版本的 Nodeeg.nvmi 16.12.0
  3. Nvm use 16.12.0

Nvm 的完整命令

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

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

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

主要的问题是您的 mongodb 服务器拒绝连接,这可能是因为服务器不在/活动状态,即使它已经安装在您的 Macbook 上。

如果你是 Mac 用户,只需要从终端升级你的 home Brew:

$ brew upgrade
$ mongod --config usr/local/etc/mongod.config
$ Xcode-select --install
$ mongo

我通过升级猫鼬的主版本解决了这个问题:

   "dependencies": {
-    "mongoose": "^5.4.13",
+    "mongoose": "^6.2.4",
}

在我的情况下,问题是有另一个 mongoDB 服务器运行的实例,我已经关闭我的计算机没有停止服务器,因此当我试图运行 mongoDB 它给我的错误。尝试重新启动计算机,它将关闭所有的服务器和错误消失了。

我试着连接,但没有开始服务。 这是我如何修复错误(MacOS Env)。

$ brew services start mongodb-community@6.0
$ mongosh // connected to db and fixed the error.
$ brew services stop mongodb-community@6.0