簡體   English   中英

如何使用 Node.js 和 Knex 連接到 AWS EC2 實例內的 postgresql 數據庫

[英]How to connect to postgresql database inside AWS EC2 instance using Node.js and Knex

我在 AWS 上租用了 Ubuntu 16.xx 的 EC2 實例,並在其上安裝了 PostgreSQL。 我在 EC2 上的 PostgreSQL 內創建了一個數據庫和表。 現在我正在嘗試使用knex通過本地 Node.js 項目連接到數據庫並從數據庫中獲取數據。

我已經從任何地方啟用了端口 5432 到 IP 的入站規則。

但是,它返回如下錯誤消息:

Error: connect ECONNREFUSED 13.229.xxx.xxx:5432
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1142:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '13.229.xxx.xxx',
  port: 5432
}

我要怎么修? 我需要安裝和實施反向代理嗎? 如果是這樣,我該如何設置? 我知道 AWS 上有 RDS,但我需要使用 EC2 來實現它。

以下是我的一些代碼:

這是knex設置,我安裝了 pg。 與本地數據庫的連接成功。 但是當我將主機切換到公共 IP/私有 IP/ec2-13-229-xxx-xxx.ap-southeast-1.compute.amazonaws.com 時。 它們都返回上述錯誤消息。

development: {
        client: 'postgresql',
        connection: {
            host: '13.229.xxx.xxx',
            database: 'project2',
            user: 'postgres',
            password: 'postgres',
            port: 5432,
        },
        pool: {
            min: 2,
            max: 10,
        },
        migrations: {
            tableName: 'knex_migrations',
        },
    },

這是我用來連接服務器的 Node.js 代碼。 一個很簡單的,只是為了測試連接。

const express = require('express');
const hbs = require('hbs');
const app = express();
const knexConfig = require('./knexfile')['development'];
const knex = require('knex')(knexConfig);

let query = knex.select('*').from('users');

query
    .then((data) => {
        console.log(data);
    })
    .catch((err) => console.log(err));

這是我的防火牆設置已關閉

另外,我暫停了我的卡巴斯基。

這是我的 pg_hba.conf 文件

而且我不確定在哪里添加我個人 IP 的權限。

此問題與pg_hba.conf僅限於本地主機有關。

此外, postgres.conf 需要具有listen_addresses = '*'

通過將外部訪問列入白名單,可以訪問數據庫。

本文的額外支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM