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读取文件后,从每行结尾开始删除字符,按第一次时无任何字符删除