Cloud SQL 連接器是程式庫,可提供加密功能,以及連線至 Cloud SQL 執行個體時以 Identity and Access Management (IAM) 為基礎的授權。如果沒有網路路徑,他們就無法提供 Cloud SQL 執行個體的網路路徑。
如要以其他方式連線至 Cloud SQL 執行個體,可以使用資料庫用戶端或 Cloud SQL 驗證 Proxy。如要進一步瞭解如何連線至 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 執行個體的路徑。
安裝
如要瞭解如何使用 Cloud SQL Java 連接器,建構及使用 JDBC 和 R2DBC 的驅動程式,請參閱下列連結:
- JDBC:使用 JDBC 連線至 Cloud SQL。
- R2DBC:使用 R2DBC 連線至 Cloud SQL。
如需在應用程式中使用這個程式庫的範例,請參閱這些範例應用程式。
驗證
這個程式庫會使用應用程式預設憑證,驗證與 Cloud SQL 伺服器的連線。
如要在本機啟用憑證,請使用下列 gcloud 指令:
gcloud auth application-default login
連結至 IntelliJ
如要將 IntelliJ 連線至 Cloud SQL 執行個體,您必須在驅動程式設定頁面的「Additional Files」部分,以 JAR 格式新增程式庫和依附元件。舉例來說,您可以在這個頁面找到預先建構的 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 連接器。為提升安全性,這個連接器會在用戶端連接器和伺服器端 Proxy 之間,使用手動驗證的強大 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
如要查看網頁應用程式中的程式碼片段,請參閱 GitHub 上的 README。
Python
如需使用程式庫的詳細操作說明,請參閱「 如何使用這個連接器」。在 GitHub 上查看連線測試程式碼範例。
Go
如需程式庫的詳細使用說明,請參閱「 使用方式」。在 GitHub 上查看連線測試程式碼範例。
Node.js
如需使用程式庫的詳細操作說明,請參閱「 使用方式」。
強制執行
透過連接器強制執行,您可以強制規定只能使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器連線至 Cloud SQL 執行個體。強制執行連接器後,Cloud SQL 會拒絕直接連線至資料庫。
如果您使用已啟用 Private Service Connect 的執行個體,則會受到限制。如果執行個體已啟用連接器強制執行功能,就無法為該執行個體建立唯讀備用資源。同樣地,如果執行個體有唯讀備用資源,您就無法為該執行個體啟用連接器強制執行功能。
gcloud
如要強制僅使用 Cloud SQL Auth Proxy 或 Cloud SQL 語言連接器連線至執行個體,請使用 gcloud sql instances patch
指令:
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement=REQUIRED
將 INSTANCE_NAME
改成 Cloud SQL 執行個體的名稱。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:包含執行個體的專案 ID 或專案編號 Google Cloud
- 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 執行個體,您的應用程式必須已具備虛擬私有雲存取權。
針對連線問題進行偵錯
如需連線問題的其他說明,請參閱「疑難排解」和「偵錯連線問題」頁面。
後續步驟
- 請參閱 GitHub 上的 Cloud SQL Java 連接器首頁。
- 請參閱 GitHub 上的 Cloud SQL Python 連接器首頁。
- 進一步瞭解 Cloud SQL 驗證 Proxy。
- 進一步瞭解身分與存取權管理。
- 瞭解支援的選項。