无法在Node.js中使用Sequelize连接到AWS RDS MariaDB

nvbavucw  于 5个月前  发布在  Node.js
关注(0)|答案(1)|浏览(75)

我正在使用Sequelize连接到MariaDB数据库的Node.js项目。在我的本地环境中,连接工作正常,但当我尝试连接到托管在AWS RDS上的MariaDB数据库时,它失败了。
我已经验证了AWS RDS连接可以使用MySQL MySQL进行工作,但是我的Node.js项目抛出了以下错误:

无法连接到数据库:SequelizeConnectionError:(conn=1690,no:45012,SQLState:08S01)连接超时:1001ms后创建套接字失败

我试着看起来像这样:

const dbConfig = require('../config/dbConfig');
const { Sequelize, DataTypes } = require('sequelize');

const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
    host: dbConfig.HOST,
    port: dbConfig.PORT,
    dialect: "mariadb",
    operatorsAliases: 0,
    define: {
        freezeTableName: true  // it's default behavior is to modified table name automatic, so we restrict it with this param
    },
    pool: {
        max: 5,
        min: 0,
        acquire: 30000,
        idle: 10000
    }
});

sequelize.authenticate()
    .then(() => {
        console.log('DB Connected...');
    })
    .catch((error) => {
        console.error(`Unable to connect to the database: ${error}`);
    })

字符串

798qvoo8

798qvoo81#

您的RDS示例是否可公开访问?
1.您可以通过前往连接和安全进行检查,如果公共访问设置为,则无法从公共工作区(仅在VPC内)访问示例。x1c 0d1x
要启用公共访问,您可以在【修改】中,在【连接】下,选择【附加配置】,将公共访问设置为“可公开访问”。另外,当被询问时,请立即更改,而不是在下一个计划中更改-您需要等待一两分钟,直到修改完成后才能访问示例。
1.在Connectivity选项卡下,检查底层EC2示例是否可访问-转到RDS示例的安全组。

1.在安全组入站规则中,添加MySQL/Aurora端口和My IP作为Source。

1.确保您已经创建了一个数据库(因为默认情况下没有)。如果您没有提供null作为dbConfig.DB值:

const dbConfig = require('./config/dbConfig');
const { Sequelize, DataTypes } = require('sequelize');

const sequelize = new Sequelize(null, dbConfig.USER, dbConfig.PASSWORD, {
host: dbConfig.HOST,
port: dbConfig.PORT,
dialect: 'mariadb',
dialectOptions: {
  // Your additional options here
},
pool: {
  max: 5,
  min: 0,
  acquire: 30000,
  idle: 10000
  }
});

sequelize.authenticate()
.then(() => {
  console.log('Connection has been established successfully.');
})
.catch(err => {
  console.error('Unable to connect to the database:', err);
});

字符串
您应该能够看到以下消息:

Executing (default): SELECT 1+1 AS result
Connection has been established successfully.

相关问题