将 Node.js 后端连接到 AWS RDS MySQL 数据库时出现问题

问题描述 投票:0回答:1

你好吗?

我在将 Node.js 后端连接到 AWS RDS MySQL 数据库时遇到问题。我从 Digital Ocean 迁移到 AWS,它在 Digital Ocean 中运行得很好。但是,迁移到 AWS 并在本地执行 npm run start 后,我收到以下错误:

getaddrinfo ENOTFOUND 数据库X.xxxxxxxxxx.eu-west-3.rds.amazonaws.com 父级:错误:getaddrinfo ENOTFOUND 数据库X.xxxxxxxxxxx.eu-west-3.rds.amazonaws.com 在 GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:118:26) { 错误号:-3007, 代码:'ENOTFOUND', 系统调用:'getaddrinfo', 主机名:'databaseX.xxxxxxxxxxx.eu-west-3.rds.amazonaws.com', 致命:真实 },

此外,在 EC2 实例内或本地使用 Insomnia,我可以执行 npm run start 命令,甚至可以完美连接到数据库。但在本地,我无法使用相同的命令进行连接:

mysql -h 数据库X.xxxxxxxxxx.eu-west-3.rds.amazonaws.com -P 3306 -u admin -p

我已经尝试解决这个问题有一段时间了,我已经打开了安全组中的所有连接,但仍然无法以任何方式连接。我将分享我的安全组和连接数据库的代码。

这就是我使用node.js连接到数据库的方式

import { Sequelize } from 'sequelize';
import fs from 'fs';
import dotenv from 'dotenv';

dotenv.config();

const sequelize = new Sequelize(process.env.DB_NAME!, process.env.DB_USER!, process.env.DB_PASSWORD!, {
    host: process.env.DB_HOST!,
    port: Number(process.env.DB_PORT),
    dialect: 'mysql',
    dialectOptions: {
        ssl: {
            require: true,
            rejectUnauthorized: true,
            ca: fs.readFileSync('./certificates/ca-certificate-aws.pem').toString(),
        },
    },
});

export default sequelize;


DB_NAME=databaseX
DB_USER=admin
DB_PASSWORD=XXXXXXXXXXXXXXXX
DB_HOST=databaseX.xxxxxxxxxxx.eu-west-3.rds.amazonaws.com
DB_PORT=3306

这就是我配置安全组的方式,我需要打开更多的门吗?

mysql node.js amazon-ec2 amazon-rds
1个回答
0
投票

RDS实例是否开启公网访问?如果没有,您将无法从本地计算机直接连接到实例。您可以通过端口转发到 RDS 来连接到它

© www.soinside.com 2019 - 2024. All rights reserved.