NodeJS无法连接到服务器ECONNREFUSED上的MongoDB

时间:2020-07-03 12:38:51

标签: node.js mongodb

我有一个测试连接数据库的基本脚本。

当我尝试使用node Connection.js运行脚本时,脚本运行了,但是我没有在控制台收到successfully connected to the database的响应,并且也没有收到任何错误。看起来好像脚本在运行,但是什么也没发生。

在VPS上,我正在使用Ubuntu 18.04。我允许从本地计算机访问IP地址和端口。

任何想法,这有什么问题,我都试图找到与该主题相关但没有成功的任何东西

Connection.js

    const mongoose = require('mongoose');
var express = require('express');
const router = express.Router();

// this is our MongoDB database
const dbRoute =
    'mongodb://username:password@ip.adress:22/CryptoCurrencies';

mongoose.Promise = global.Promise;

// connects our back end code with the database
mongoose.connect(dbRoute, {
    useNewUrlParser: true,
    useUnifiedTopology: true
});

let db = mongoose.connection;

db.once('open', () => console.log('connected to the database'));

EDIT1

我编辑了代码,并100%确定可以在ubuntu服务器port 22上允许,但仍然无法使用Node连接到VPS

我收到此错误-(node:10115) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connect ECONNREFUSED

关于如何解决此问题的任何想法?用户名和密码正确,数据库名称也正确,IP地址和端口也正确。目前,我完全不了解出什么问题了。我检查了大量资源来解决该问题,然后将NodeJS脚本从本地计算机连接到VPS服务器。

2 个答案:

答案 0 :(得分:3)

我确定您的VPS必须将端口22绑定到openssh-server ...您确定能够正确启动mongod并且它正在侦听端口22吗?

顺便说一句,所有1024以下的服务都是标准化的,您应始终尝试使用1024以上的端口。

您能与我们分享您的mongod的配置吗?

答案 1 :(得分:3)

服务器上的配置似乎存在一些问题。请检查这些清单是否有问题。

  • 默认情况下,MongoDb在端口号27017上运行,并且端口号22为SSH保留,请确保您连接的端口号正确。
  • 如果通过网络连接到服务器,请确保您的MongoDB服务器实例正在侦听所有网络接口和IP地址。有关更多详细信息,请检查mongod.conf(或mongodb.conf)文件(bind_ip = 127.0.0.1仅用于本地,bind_ip = 0.0.0.0侦听来自所有网络接口的流量。)。
  • 如果您通过SSH连接,则需要ubuntu OS上的用户名和密码,而直接与mongodb连接则需要在mongo服务器实例上定义的用户的用户名名称密码。
  • 请检查您的mongo实例mongod.conf(或mongodb.conf)文件上的授权设置是否已启用。
  • 请确保您创建的用户有权访问数据库(CryptoCurrencies是您要连接的用户)

检查此链接,了解如何在MongoDB服务器实例https://medium.com/mongoaudit/how-to-enable-authentication-on-mongodb-b9e8a924efac上配置auth