MongoNetworkError:首次连接时无法连接到服务器[localhost:27017] [MongoNetworkError:connect ECONNREFUSED 127.0.0.1:27017]

时间:2018-05-04 10:45:05

标签: node.js mongodb

我是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);

29 个答案:

答案 0 :(得分:11)

您必须先在系统中安装SELECT FIND_IN_SET('0875555555', (SELECT customer_mobile FROM your_table_name)) as found 数据库服务器并启动它。

使用以下链接安装MongoDB

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

答案 1 :(得分:8)

尝试了每个解决方案之后,谷歌在堆栈溢出时都想出了办法,我发现了我的特殊问题。 很久以前,我已经编辑了主机文件,以便可以从我的虚拟机访问本地主机。

删除此条目为我解决了该问题,并通过上述解决方案中提供的链接正确安装了mongoDB,并包括正确的Promise处理代码:

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

答案 2 :(得分:5)

您的IP地址可能已更改。

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

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

遵循上面@CoryM答案的逻辑:

  

尝试了每个解决方案之后,谷歌在堆栈溢出时都想出了办法,我发现了我的特殊问题。很久以前,我已经编辑了hosts文件,以允许我从virtualbox访问本地主机。

     

删除该条目对我来说解决了...

2个月前,我还有效地编辑了主机文件以进行Python机器学习设置。因此,我使用127.0.0.1代替了localhost而不是删除它,因为我仍然需要它,它起作用了:

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

sudo服务mongod启动

答案 7 :(得分:1)

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

sudo service mongod status

如果错误是这样的

  • 无法解除套接字文件/tmp/mongodb-27017.sock的未知错误
  • 致命断言40486,位于src / mongo / transport / transport_layer_asio.cpp 670

只需运行此操作即可解决您的问题

rm /tmp/mongodb-27017.sock

答案 8 :(得分:1)

如果已经进行了所有的设置(例如安装mongo db,并为其安装了客户端,例如mongoose),则只需在基本文件夹的终端中运行mongod即可。运行命令后,运行您正在处理的项目文件,然后该错误不应出现。

答案 9 :(得分:1)

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

答案 10 :(得分:0)

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

现在可以使用了。

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

答案 11 :(得分:0)

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

Use the below link to install MongoDB

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

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

答案 12 :(得分:0)

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

尝试查找系统中正在使用的防火墙, 例如以我为例, 配置文件位于

/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

答案 13 :(得分:0)

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

现在工作正常。

答案 14 :(得分:0)

我想您必须将cloud.mongodb.com连接到您的集群。

一种快速的解决方法是转到“连接”标签并添加您当前的IP地址(在浏览器或桌面应用的群集门户中)。 IP地址必须由于多种原因而更改,例如更改wifi。

只需尝试这种方法,当我遇到此错误时它对我有用。

答案 15 :(得分:0)

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

在终端中的命令mongo

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

mongodb://127.0.0.1:*port*

我用JS代码中的URL替换了它。

答案 16 :(得分:0)

这对我有用。

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

答案 17 :(得分:0)

我已连接到VPN,并且连接已完成。我当时在使用学校的WiFi,显然有限制。

答案 18 :(得分:0)

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

启动mongod时,应该有一个“未找到”数据库的日志。

答案 19 :(得分:0)

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

答案 20 :(得分:0)

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

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

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

答案 21 :(得分:0)

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

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

答案 22 :(得分:0)

我在当地的星巴克工作时遇到了这个问题,我还记得我最初通过Mongo Atlas设置数据库时遇到的问题。我将我的IP地址设置为能够访问数据库。在浏览了多个线程之后,我在Atlas上更改了IP地址,问题就消失了。希望这对某人有帮助。

答案 23 :(得分:0)

1)如果尚未安装mongodb,请安装它。

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

答案 24 :(得分:0)

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

答案 25 :(得分:-1)

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

答案 26 :(得分:-1)

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

答案 27 :(得分:-2)

您需要从此处https://www.mongodb.com/download-center/community?jmp=docs

在本地安装或重新安装MongoDB服务。

或者您可以从此处在云上使用猫鼬:https://www.mongodb.com/cloud/atlas

这两种解决方案为我解决了这个问题。

答案 28 :(得分:-3)

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