簡體   English   中英

從 Heroku 上的 Node.js 連接到 CloudSQL

[英]Connecting to CloudSQL from Node.js on Heroku

我有一個 Node.js 應用程序(在 AppEngine 上運行)連接到 GCP CloudSQL (MySQL) 實例。 現在我想從運行在 Heroku 上的 Node.js (Knex) 連接到同一個數據庫。

在 AppEngine 中,Node.js 通過用戶/密碼和 socketPath 進行連接。 我還通過主機 IP(通過 SSL)從 MySQL Workbench 連接到同一個 MySQL 數據庫。

我正在嘗試使用與 Heroku 的 Workbench 相同的主機、端口、用戶和傳遞,但它不起作用。 為了簡化操作,我暫時允許所有網絡連接 (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',
    },
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM