Mongodb:第一次连接时无法连接到服务器
Posted
技术标签:
【中文标题】Mongodb:第一次连接时无法连接到服务器【英文标题】:Mongodb: failed to connect to server on first connect 【发布时间】:2017-05-10 03:46:53 【问题描述】:我收到以下错误:
Warning MongoError: failed to connect to server [mongodb:27017] on first connect
at Pool.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/topologies/server.js:325:35)
at emitOne (events.js:96:13)
at Pool.emit (events.js:188:7)
at Connection.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/connection/pool.js:270:12)
at Connection.g (events.js:292:16)
at emitTwo (events.js:106:13)
at Connection.emit (events.js:191:7)
at Socket.<anonymous> (/Users/michaelks/Desktop/users/node_modules/mongodb-core/lib/connection/connection.js:173:49)
at Socket.g (events.js:292:16)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at connectErrorNT (net.js:1025:8)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
name: 'MongoError',
message: 'failed to connect to server [mongodb:27017] on first connect'
即使我在运行 Mongo 的终端窗口中得到了这个:
2016-12-25T03:45:23.715+0100 I NETWORK [initandlisten] connection accepted from 127.0.0.1:58868 #8 (8 connections now open)
好像有联系..
我都试过了
$ mongod
和
$ brew services start mongo
这是我的 test_helper.js
const mongoose = require('mongoose');
mongoose.connect('mongodb:localhost/users_test');
mongoose.connection
.once('open', () => console.log('Good to go!'))
.on('error', (error) =>
console.warn('Warning', error);
);
我没有专门创建数据库“users_test”,因为我认为 mongoose 或 mongo 或两者都会即时执行此操作。
我已经尝试过“localhost”和“127.0.0.1”。 我在 OSX 10.11.5 我正在运行 Node 7.3.0 和 Mongo 3.2.9
我做错了什么?我如何找出问题所在?
【问题讨论】:
使用命令 ipconfig/ifconfig 检查系统的 IP 地址。然后检查nodejs控制台错误是否使用相同的IP地址与mongodb建立连接。 【参考方案1】:To connect 到 mongodb
和 mongoose
,您可以使用:
mongoose.connect('mongodb://localhost/users_test');
或
mongoose.connect('localhost/users_test');
或
mongoose.connect('localhost','users_test');
但不是mongoose.connect('mongodb:localhost/users_test');
,它与正确的主机名不匹配(mongodb
而不是localhost
)
【讨论】:
【参考方案2】:由于解决方案来自不同的上下文,因此再添加一个答案:
MongoDb Atlas 问题解决方案
我按照以下步骤连接到 MongoDB Atlas 并将我机器的 IP 列入白名单:
转到安全选项卡 转到安全选项卡下的网络访问选项卡 转到 IP 白名单标签 输入IP address of your machine【讨论】:
【参考方案3】:我在尝试连接 mlab db 时遇到了同样的错误,这是因为我的组织网络有一些限制,我切换到移动热点并且它工作正常。
【讨论】:
这可能是一个鲜为人知的答案,但它救了我。谢谢 这也救了我,谢谢伙计。有趣的是,我的组织网络阻止了 mongodb 而不是 postgresql 谢谢!尝试使用图书馆热点访问我的,但它不起作用。【参考方案4】:我多次遇到这个问题,这里有一些troubleshooting list
-
确保
database path
是exist
,C:\data\db
中的windows默认路径
确保mongo is running
,要运行它转到C:\Program Files\MongoDB\Server\3.4\bin
并运行以下命令:
mongod.exe
mongo.exe
connection string is correct
喜欢mongodb://localhost/database-name
【讨论】:
mongodb://localhost/database-name 不是 mongdb://localhost/database-name【参考方案5】:如果是集群MongoDB那么你需要将你当前的IP添加到集群中,添加你当前的IP地址你需要完成以下几个步骤-
step 1- go to login page of Mongodb and login with valid credential - https://cloud.mongodb.com/user#/atlas/login
step 2- CLick Network Access from left sidebar under Security Section
Step 3 - Click Add IP Address
Step 4 - Click Add Current IP Address or Allow Connection From Any Where
now try to connect - npm start
对于本地 MongoDB 使用 mongo 字符串,例如 "mongodb+srv://username:pass%40ord@clastername-blqnk.mongodb.net/test?retryWrites=true&w=majority"
密码必须像示例字符串一样编码
【讨论】:
在我的情况下,我的 IP 地址没有被添加。所以它对我有用。【参考方案6】:对我来说,问题是 mongo 没有运行。所以首先我在控制台中启动了“mongod”命令。后来在另一个控制台选项卡中我运行了“mongo”。现在连接成功。 现在运行您的应用程序,您的问题应该得到解决。
【讨论】:
【参考方案7】:在连接到 wifi 网络时,mongodb://localhost/db_name
按预期工作。
当我没有连接到任何 wifi 网络时,这是行不通的。相反,我使用了,
mongodb://127.0.0.1/db_name
并且成功了。
可能与 ip 配置有关。
【讨论】:
【参考方案8】:如果是ATLAS等云中的远程数据库,您应该创建白名单条目0.0.0.0/0。这允许您从任何 IP 地址访问您的集群 ATLAS。
【讨论】:
【参考方案9】:我在 PowerShell 实例中运行 mongod。我在 mongod 的 powershell 控制台中没有得到任何输出。我单击运行 mongod 的 PowerShell 实例,按 Enter 并恢复执行。我不确定是什么导致执行停止,但我现在可以立即连接到这个 mongo 实例。
【讨论】:
【参考方案10】:我试图将 mlab 与我公司的 wifi 连接连接,但出现此错误。但是当我切换到个人网络时,它可以正常工作并建立连接。
【讨论】:
【参考方案11】:如果 mongo 实例是在 cloud.mongodb.com 上构建的,则当实例只能从配置实例时 IP 白名单池中设置的已知 IP 地址工作时会出现此错误。
所以需要从mongo仪表板左侧的网络访问菜单的IP白名单中设置当前IP地址。
BR,
【讨论】:
【参考方案12】:本地MongoDb问题解决方法
按照以下步骤解决:
改变
mongodb://localhost:27017/local
到
localhost/local
错误消失了
【讨论】:
Mongodb 默认端口是 27017。我想你有一个小错字 @BertrandMartel 感谢您强调这一点。不知道我是怎么错过你的评论的。【参考方案13】:我连接到 *** 并且它工作正常。我使用的是学校的 WiFi。
【讨论】:
【参考方案14】:除了配置问题之外,这可能有两个简单的原因。
-
如果您连接到组织/机构的 ***,连接可能会受到限制。
您没有从列入白名单的“IP”进行连接
要添加列入白名单的 IP,请登录 MongoDB Atlas,转到 Security -> Network Access -> Add IP Address
Screenshot
然后在'Access List Entry'字段中添加你当前的IP
【讨论】:
答案包含前面的答案已经涵盖的解决方案。【参考方案15】:在我的情况下,我重新启动了 Mac 并再次工作 :)
【讨论】:
【参考方案16】:以上方法我都试过了。
允许从任何数据库访问, 已验证连接字符串的凭据正确, 创建了另一个用户,这些都不适合我。
最后,我创建了一个新数据库并切换到它。一切都很好。 幸运的是,DB 并不是那么重要(出于自学目的),因此损失并没有那么大。
【讨论】:
您的解决方案可能适合您个人,但它并没有展示通用解决方案,因为问题发布者很可能不能简单地做您所做的事情。以上是关于Mongodb:第一次连接时无法连接到服务器的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB 与 Docker “首次连接时无法连接到服务器 [localhost:27017]”
MongoDB 与 Docker “首次连接时无法连接到服务器 [localhost:27017]”
无法使用 MEAN 堆栈连接到 Mongodb.atlas 集群