[英]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.