gpt4 book ai didi

node.js - Sequelize 无法访问 GCP Cloud SQL

转载 作者:行者123 更新时间:2023-12-03 22:24:50 28 4
gpt4 key购买 nike

我有一个谷歌云 SQL 实例,我希望能够从我的机器上本地运行的 node.js 应用程序访问它。
我已经通过公共(public) IP 启用了 Cloud SQL 实例访问,并使用我的本地计算机 IP 在 GCP 上创建了一个网络,我已经通过多种方式测试了连接:

  • MySQL 工作台
  • 终端
  • 从我在本地运行的 NodeJS 应用程序使用 mysql2 连接

  • 上述所有方式都已成功连接,我可以按预期在我的云 SQL 实例上工作,问题是当我尝试允许我的 NodeJS 应用程序使用 sequelize 进行连接时,我可以看到这个错误
    UnhandledPromiseRejectionWarning: SequelizeAccessDeniedError: Access denied for user 'root'@'localhost' (using password: YES)
    这是我的连接代码:
        host: 'XXX.XX.XX.XX',
    port: "",
    user: "root",
    password: 'password',
    database: "DB_NAME",
    dialect: "mysql",
    pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
    }

    const db = {};
    const connection = await mysql.createConnection({ host, port, user, password });
    await connection.query(`CREATE DATABASE IF NOT EXISTS \`${database}\`;`);
    const sequelize = new Sequelize(database, user, password, { dialect: dialect });

    db.Sequelize = Sequelize;
    db.sequelize = sequelize;

    // // init models and add them to the exported db object
    db.orders = require("../../models/order.model.js")(sequelize, Sequelize);

    db.sequelize.sync().then(function(){
    console.log('DB connection sucessful.');
    }, function(err){
    // catch error here

    });

    最佳答案

    似乎我应该将主机传递给它,因为它在未明确指定时将主机视为 localhost
    所以这:

        const sequelize = new Sequelize(database, user, password, { dialect: dialect });
    应该更新到这个:
        const sequelize = new Sequelize(database, user, password, { host: host, dialect: dialect });

    关于node.js - Sequelize 无法访问 GCP Cloud SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65354311/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com