从 Node.js 在 Heroku 上连接到 CloudSQL



我有一个连接到GCP CloudSQL(MySQL(实例的Node.js应用程序(在AppEngine上运行(。现在我想从Heroku上运行的Node.js(Knex(连接到同一个数据库。

在AppEngine中,Node.js通过用户/密码和socketPath进行连接。我还通过主机IP(通过SSL(从MySQL Workbench连接到相同的MySQL数据库。

我正在尝试使用与 Heroku 的工作台相同的主机、端口、用户和通行证,但它不起作用。为了方便起见,我暂时允许所有网络连接 (0.0.0.0/0(,并允许非 SSL 连接。

这是错误:ER_ACCESS_DENIED_ERROR: Access denied for user 'usernamehere'@'xx.xxx.xxx.xx' (using password: YES)"

环境变量存储在 Heroku 应用程序中,它们必须正常工作,因为用户名正确。

这不是很有帮助,但这是代码:

import Knex = require('knex');
const envConfig = require('../config/environments').get(process.env.NODE_ENV);
module.exports = knex;

我发现解决此问题的唯一方法是通过SSL连接到CloudSQL。

const mysql = require("mysql");
const fs = require('fs');
const knex = require('knex')({
client: 'mysql',
version: '5.7',
connection: {
host : 'xx.xx.xx.xx',
ssl: {
ca: fs.readFileSync('ca.pem'),
key: fs.readFileSync('client-key.pem'),
cert: fs.readFileSync('client-cert.pem'),
},
user : 'root',
password : 'xxxxxxxxx',
database : 'mydbname',
},
});

相关内容

  • 没有找到相关文章

最新更新