Sequelize 无法访问 GCP Cloud SQL
Sequelize can't access GCP Cloud SQL
我有一个 Google 云 SQL 实例,我希望能够从我的 node.js 应用程序 运行 在我的机器上本地访问它。
我已经通过 public IP 启用了云 SQL 实例访问,并使用我的本地机器 IP 在 GCP 上创建了一个网络,我已经通过多种方式测试了连接:
- MySQL Workbench
- 航站楼
- 从我的 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
});
似乎我应该传递主机,因为它在未明确指定时以某种方式将主机视为本地主机
所以这个:
const sequelize = new Sequelize(database, user, password, { dialect: dialect });
应更新为:
const sequelize = new Sequelize(database, user, password, { host: host, dialect: dialect });
我有一个 Google 云 SQL 实例,我希望能够从我的 node.js 应用程序 运行 在我的机器上本地访问它。
我已经通过 public IP 启用了云 SQL 实例访问,并使用我的本地机器 IP 在 GCP 上创建了一个网络,我已经通过多种方式测试了连接:
- MySQL Workbench
- 航站楼
- 从我的 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
});
似乎我应该传递主机,因为它在未明确指定时以某种方式将主机视为本地主机
所以这个:
const sequelize = new Sequelize(database, user, password, { dialect: dialect });
应更新为:
const sequelize = new Sequelize(database, user, password, { host: host, dialect: dialect });