使用 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 连接器库之一(也可在 Python 、 Java 和 Go 中找到)。
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/