Mongodb:第一次连接时无法连接到服务器

时间:2016-12-25 02:55:38

标签: node.js mongodb mongoose

我收到以下错误:

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);
 });

我没有专门制作db&#34; users_test&#34;因为我认为猫鼬或mongo或两者都会在飞行中这样做。

我已尝试过两次&#34; localhost&#34;和&#34; 127.0.0.1&#34;。 我是OSX 10.11.5 我正在运行Node 7.3.0和Mongo 3.2.9

我做错了什么?我怎么弄清楚出了什么问题?

15 个答案:

答案 0 :(得分:21)

使用mongodb

To connectmongoose,您可以使用:

mongoose.connect('mongodb://localhost/users_test');

mongoose.connect('localhost/users_test');

mongoose.connect('localhost','users_test');

但不是mongoose.connect('mongodb:localhost/users_test');,它与正确的主机名不匹配(mongodb而不是localhost

答案 1 :(得分:9)

  

添加另一个答案,因为解决方案来自不同的上下文:

MongoDb Atlas问题解决方案

我已连接到MongoDB Atlas,并按照以下步骤将机器的IP列入了白名单:

  • 转到安全标签

the security tab

  • 转到“安全”标签下的“网络访问”标签

network access tab under security tab

  • 转到“ IP白名单”标签

IP whitelist tab


答案 2 :(得分:7)

我遇到了这个问题serval次,这里有一些troubleshooting list

  1. 确保database pathexistC:\data\db
  2. 中Windows中的默认路径
  3. 确保mongo is running,运行它转到C:\Program Files\MongoDB\Server\3.4\bin并运行以下命令:
    1. mongod.exe
    2. mongo.exe
  4. 确保您的connection string is correctmongdb://localhost/database-name

答案 3 :(得分:3)

当我尝试连接mlab db时出现同样的错误,这是因为我的组织网络有一些限制,我切换到移动热点并且它有效。

答案 4 :(得分:2)

如果它是集群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

enter image description here

,对于本地MongoDB,请使用mongo String,例如    “ mongodb + srv:// username:pass%40ord@clastername-blqnk.mongodb.net/test?retryWrites = true&w = majority”

密码必须像示例字符串一样编码

答案 5 :(得分:1)

更改

mongodb://localhost:27017/local

localhost/local

错误消失了

答案 6 :(得分:1)

对我来说,问题是mongo没有运行。所以首先我在控制台中启动了“mongod”命令。稍后在另一个控制台选项卡中我运行了“mongo”。现在连接成功了。 现在运行您的应用程序,您的问题应该得到解决。

答案 7 :(得分:1)

我在PowerShell实例中运行mongod。我没有在mongod的powershell控制台中获得任何输出。我点击运行mongod的PowerShell实例,点击回车然后恢复执行。我不确定导致执行暂停的原因,但我现在可以立即连接到这个mongo实例。

答案 8 :(得分:1)

连接到wifi网络时,mongodb://localhost/db_name按预期工作。

当我没有连接到任何wifi网络时,这无法正常工作。相反,我用过, mongodb://127.0.0.1/db_name并且它有效。

可能与ip配置有关。

答案 9 :(得分:1)

我已连接到VPN,并且可以正常工作。我正在使用学校的WiFi。

答案 10 :(得分:0)

我正在尝试将mlab与公司的wifi连接连接,并且出现此错误。但是当我切换到个人网络后,它开始工作并建立了连接。

答案 11 :(得分:0)

如果mongo实例是在cloud.mongodb.com上构建的,则当该实例只能通过配置该实例的IP白名单池中设置的已知IP地址工作时,就会出现此错误。

因此,需要从mongo仪表板的左侧网络访问菜单中的IP白名单上设置当前IP地址。

BR,

答案 12 :(得分:0)

如果云中有远程数据库(例如ATLAS),则应创建白名单条目0.0.0.0/0。这使您可以从任何IP地址访问群集ATLAS。

enter image description here

答案 13 :(得分:0)

除了配置问题外,可能有两个简单的原因。

  1. 如果您连接到组织/研究所的 VPN,则连接可能会受到限制。
  2. 您不是从列入白名单的“IP”进行连接

要添加白名单IP,请登录MongoDB Atlas,转到安全 -> 网络访问 -> 添加IP地址

Screenshot

然后在'访问列表条目'字段中添加您当前的IP

答案 14 :(得分:-1)

上面的方法我都试过了。

  • 允许从任何数据库访问,
  • 验证连接字符串的正确凭据,
  • 创建了另一个用户,

这些都不适合我。

最后,我创建了一个新数据库并切换到它。一切都很好。 幸运的是,DB 并不是那么重要(出于自我教育目的),因此损害没有那么大。