Cloud SQL 连接器是在连接到 Cloud SQL 实例时提供加密和基于 Identity and Access Management (IAM) 的授权的库。Cloud SQL 连接器无法提供 Cloud SQL 实例的网络路径(如果尚不存在)。
连接到 Cloud SQL 实例的其他方法包括使用数据库客户端或 Cloud SQL Auth 代理。如需详细了解如何连接到 Cloud SQL 实例,请参阅连接选项简介页面。
本页面介绍了以下 Cloud SQL 连接器:
- Cloud SQL Java 连接器
- Cloud SQL Python 连接器(在 Colab 中打开)
- Cloud SQL Go 连接器
- Cloud SQL Node.js 连接器
优势
使用 Cloud SQL 连接器具有以下优势:
- IAM 授权:使用 IAM 权限来控制谁或什么可以连接到您的 Cloud SQL 实例。
- 便利:无需管理 SSL 证书、配置防火墙规则或启用已获授权的网络。
- IAM 数据库身份验证:支持 Cloud SQL 的自动 IAM 数据库身份验证功能。
准备工作
- 启用 Cloud SQL Admin API。
- 创建一个 Cloud SQL 实例,包括配置默认用户。
如需详细了解如何创建实例,请参阅创建实例。
如需详细了解如何配置默认用户,请参阅为默认用户账号设置密码。
- 配置连接到 Cloud SQL 实例所需的角色和权限。
设置
Java
Cloud SQL Java 连接器是在连接到 Cloud SQL 实例时提供基于 IAM 的授权和加密的库。它无法提供 Cloud SQL 实例的网络路径(如果尚不存在)。
安装
如需了解有关构建 JDBC 和 R2DBC 驱动程序并与 Cloud SQL Java 连接器搭配使用的说明,请参阅以下链接:
- JDBC:使用 JDBC 连接到 Cloud SQL。
- R2DBC:使用 R2DBC 连接到 Cloud SQL。
如需查看在应用的上下文中使用此库的示例,请参阅相关示例应用。
身份验证
此库使用应用默认凭据对 Cloud SQL 服务器的连接进行身份验证。
如需在本地激活凭据,请使用以下 gcloud 命令:
gcloud auth application-default login
连接 IntelliJ
如需将 IntelliJ 连接到您的 Cloud SQL 实例,您需要将库作为包含依赖项的 jar 添加到驱动程序设置页面上的其他文件部分中。例如,您可以在 Cloud SQL Java 连接器版本页面上找到预构建的 fat jar 来实现此目的。
Python
Cloud SQL Python 连接器是一个库,可与数据库驱动程序结合使用,以允许具有足够权限的用户连接到 Cloud SQL 数据库,而无需手动将 IP 列入许可名单或管理 SSL 证书。
如需查看使用 Cloud SQL Python 连接器的交互式示例,请打开 Cloud SQL Python 连接器笔记本。
PostgreSQL 支持的驱动程序是 pg8000 和 asyncpg。
安装
如需安装最新版本的 Cloud SQL Python 连接器,请使用 pip install
命令并为您的数据库指定 pg8000
或 asyncpg
驱动程序:
pip install "cloud-sql-python-connector[pg8000]"
或
pip install "cloud-sql-python-connector[asyncpg]"
身份验证
此库使用应用默认凭据对 Cloud SQL 服务器的连接进行身份验证。
如需在本地激活凭据,请使用以下 gcloud 命令:
gcloud auth application-default login
Go
Cloud SQL Go 连接器是专为与 Go 语言搭配使用而设计的 Cloud SQL 连接器。为了提高安全性,该连接器在客户端连接器与服务器端代理之间使用经过手动身份验证的可靠 TLS 1.3 加密,而无需考虑数据库协议。
安装
您可以使用 go get
安装此库:
go get cloud.google.com/go/cloudsqlconn
Node.js
Node.js 连接器是专为与 Node.js 运行时搭配使用而设计的库,可让您安全地连接到 Cloud SQL 实例。
安装
您可以使用 npm install
安装此库:
npm install @google-cloud/cloud-sql-connector
使用
Java
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
Python
如需详细了解如何使用该库,请参阅如何使用此连接器。查看 GitHub 上的示例连接测试代码。
Go
如需详细了解如何使用该库,请参阅用法。查看 GitHub 上的示例连接测试代码。
Node.js
如需详细了解如何使用该库,请参阅用法。
强制执行
通过使用连接器强制执行,您可以强制仅使用 Cloud SQL Auth 代理或 Cloud SQL 语言连接器连接到 Cloud SQL 实例。强制使用连接器后,Cloud SQL 会拒绝与数据库的直接连接。
如果您使用的是启用了 Private Service Connect 的实例,则存在以下限制。如果实例已启用连接器强制执行,则您无法为该实例创建读取副本。同样,如果实例具有读取副本,则您无法为该实例启用连接器强制执行。
gcloud
如需强制仅使用 Cloud SQL Auth 代理或 Cloud SQL 语言连接器连接到实例,请使用 gcloud sql instances patch
命令:
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement=REQUIRED
将 INSTANCE_NAME
替换为您的 Cloud SQL 实例的名称。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
- INSTANCE_NAME:Cloud SQL 实例的名称
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
请求 JSON 正文:
{ "kind": "sql#instance", "name": INSTANCE_NAME, "project": PROJECT_ID, "settings": { "connectorEnforcement": "REQUIRED", "kind": "sql#settings" } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
问题排查
驱动程序版本
确保使用最新版本的 Cloud SQL 连接器和数据库驱动程序,以避免不兼容。某些较低版本的驱动程序不受支持。
连接路径
Cloud SQL 连接器可提供连接授权,但不提供新的连接路径。例如,如需使用专用 IP 地址连接到 Cloud SQL 实例,您的应用必须已具有 VPC 访问权限。
调试连接问题
如需获得连接问题方面的更多帮助,请参阅问题排查和调试连接问题页面。
后续步骤
- 请参阅 GitHub 上的 Cloud SQL Java 连接器主页。
- 请参阅 GitHub 上的 Cloud SQL Python 连接器主页。
- 详细了解 Cloud SQL Auth 代理。
- 详细了解 IAM。
- 了解支持选项。