代码之家  ›  专栏  ›  技术社区  ›  João Denari

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

  •  0
  • João Denari  · 技术社区  · 1 年前

    你好吗

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

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

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

    mysql-h数据库X.xxxxxxxxxxx.eu-west-3.rds.amazonaws.com-P 3306-u管理员-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
    

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

    enter image description here

    1 回复  |  直到 1 年前
        1
  •  1
  •   toma margishvili    1 年前

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

    推荐文章