你好吗
我在将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
这就是我配置安全组的方式,我需要打开更多的门吗?