node.js - 如何使用 Node.js 连接到 Cloud SQL?

标签 node.js google-cloud-platform google-cloud-sql cloud-sql-proxy

使用 Node.js 连接到 Cloud SQL 并不总是那么简单。

根据上下文,有时您必须连接到 Unix 域套接字、将 TCP 连接的 IP 地址列入允许列表、在本地运行 Cloud SQL Auth 代理。确保这些连接安全是另一个挑战:您可能必须管理 SSL 证书、防火墙规则、IP 地址等。

是否有推荐的方法使用 Node.js 以安全且简单的方式连接到 Cloud SQL?

最佳答案

是的,确实有,Cloud SQL Node.js Connector ,一个 Node.js 包,可以让所有三个受支持的数据库引擎(Postgres、MySQL 和 SQL Server)从任何地方(本地计算机、Cloud Run、App Engine、Cloud Functions 等)轻松安全地连接到 Cloud SQL

Node.js 连接器是 Cloud SQL 连接器库之一(也可在 PythonJavaGo 中找到)。

How is a connector different from the other methods?

Cloud SQL 连接器库提供 following benefits :

  • IAM 授权:连接器使用 IAM 权限来控制谁以及什么可以连接到您的 Cloud SQL 实例。
  • 提高安全性:连接器在客户端连接器和服务器端代理之间使用强大的、更新的 TLS 1.3 加密和身份验证,独立于数据库协议(protocol)。
  • 方便:连接器不再需要使用和分发 SSL 证书、管理防火墙或源/目标 IP 地址。
  • IAM 数据库身份验证(可选):连接器提供对 Cloud SQL’s automatic IAM database authentication feature 的支持.

How do I use the Node.js Connector ... what does the code look like?

基本用法(使用 pg )

import pg from 'pg';
import {Connector} from '@google-cloud/cloud-sql-connector';
const {Pool} = pg;

const connector = new Connector();
const clientOpts = await connector.getOptions({
  instanceConnectionName: 'my-project:region:my-instance',
  ipType: 'PUBLIC', 
});
const pool = new Pool({
  ...clientOpts,
  user: 'my-user',
  password: 'my-password',
  database: 'db-name',
  max: 5
});
const {rows} = await pool.query('SELECT NOW()');
console.table(rows); // prints returned time value from server

await pool.end();
connector.close();

有关更多使用示例(MySQL、SQL Server、自动 IAM AuthN),请参阅 Cloud SQL Node.js Connector's detailed README .

关于node.js - 如何使用 Node.js 连接到 Cloud SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76757543/

相关文章:

python - 安装python库后无法连接到google cloud datalab

node.js - 如何在谷歌云中自动化 NodeJS 脚本

google-cloud-sql - Google App Maker 将记录保存到数据库每条记录需要 240 毫秒

node.js - 使用nodemailer发送电子邮件不适用于互联网服务,但适用于本地服务器

node.js:创建连接的可写和可读流对

android - 有没有办法使用 logback-android 将事件从我的 Android 应用程序记录到 Stackdriver?

php - 在生产中更改数据库而不丢失数据

javascript - 从 html 响应 Nodejs 中提取文本值

node.js - Mongoose 重复键错误处理和未处理的 promise 拒绝

javascript - 创建动态准备语句以插入数据库