返回列表

GCP國際帳號認證 GCP Cloud SQL 數據庫開通權限設定教學

谷歌雲GCP / 2026-07-18 14:20:20

GCP國際帳號認證 前言:為什麼權限設定常常卡住

很多人第一次在 GCP 開 Cloud SQL,最後不是卡在「建不出實例」,而是卡在「能不能連、連上能不能操作」。原因通常不在單一設定,而是多個層級一起決定結果:專案與 API 是否可用、Cloud SQL 實例是否已啟用、網路連線是否被允許、使用者帳號是否存在、以及你給了哪些角色或權限。

這篇文章會用一條清晰的路徑帶你走完:你要如何開通 Cloud SQL、如何把連線權限打通、以及如何設定資料庫操作權限(例如讀、寫、管理)。同時我也會把常見坑列出來,讓你知道錯在哪一段。

第一章:先釐清「權限」其實分幾種

你可以把 Cloud SQL 的權限想成三條線一起工作。

1)GCP 層級(IAM)

這是你在 Google Cloud Console 裡看到的權限,通常影響你是否能「管理」Cloud SQL 資源、是否能啟用某些功能、或是否能透過特定方式連線。

GCP國際帳號認證 2)網路與連線層級

即使資料庫使用者權限都對了,若網路不允許你的來源 IP 或連線方式(例如公開 IP、內部連線、Cloud SQL Auth Proxy)就依然會失敗。你看到的錯誤訊息常常會是「連線逾時」或「被拒絕」。

GCP國際帳號認證 3)資料庫層級(DB User 與角色)

這才是你熟悉的「SQL 使用者」與「角色」。例如 PostgreSQL / MySQL / SQL Server 各自的角色、授權方式不同,但核心概念一致:你在 Cloud SQL 裡建立使用者,並賦予足夠的權限。

第二章:開通 Cloud SQL 前的準備

在動手設定之前,先確認你至少具備三件事:擁有正確的 GCP 專案、能操作 Cloud SQL 的權限、以及你打算使用的連線方式。

1)確認 Cloud SQL API 與必要服務

GCP國際帳號認證 進入 GCP 專案後,檢查是否已啟用 Cloud SQL 相關服務(通常你在 Console 裡看到「Cloud SQL Admin API」等)。如果你缺少啟用服務的權限,後續建置也會卡住。

2)選擇你的連線策略

你通常會在以下幾種策略中選一種:

  • 使用 Cloud SQL 的公開 IP(需要管理 IP 白名單或等效設定)
  • 使用私有 IP(通常需要 VPC 與網路串接)
  • 使用 Cloud SQL Auth Proxy(常見於不想開放公開 IP 的情境)

若你只是教學或測試環境,可能會先用公開 IP;但若是正式環境,我會建議你逐步走向私有 IP 或 Auth Proxy,以降低暴露面。

GCP國際帳號認證 第三章:建立 Cloud SQL 實例(並把連線先打通)

你可以把建立實例理解為「開機與接線」。接線不通之前,後面談授權幾乎都沒有意義。

1)建立實例

在 Cloud SQL 介面選擇資料庫引擎(MySQL、PostgreSQL、SQL Server),填入實例名稱、地區、版本、以及儲存規格。若要更貼近真實情境,記得設置備援(高可用)與備份策略。

GCP國際帳號認證 2)設定網路:公開 IP 或私有 IP

若你選公開 IP,你需要在實例或連線相關設定中加入允許的來源 IP(例如你的開發機器 IP)。若你忘了這一步,後面即使用對的 DB 使用者,連線仍會失敗。

若你選私有 IP,就必須確認:

  • 你的 VPC 與子網允許該實例的私有連線
  • 你的運行環境(例如 VM、GKE 節點、或在同網段的服務)能解析並路由到該私有 IP

3)測試連線方式(先不急著做授權)

建議你先用你打算的方式連到資料庫,哪怕先以管理員身分測試。你會更快判斷問題出在哪層:

  • 若連不上:先看網路與連線策略
  • 若連得上但登入失敗:看 DB 使用者與密碼
  • 若登入成功但查詢失敗:看資料庫層級授權

第四章:建立資料庫使用者與基本授權(DB 層級)

Cloud SQL 的授權最終落在 DB 層級。這一章我會用「通用流程」描述,避免你卡在不同引擎的細節上。

1)先用管理員連上去

使用你在實例建立時設定的管理員帳號(通常是自帶的 root / postgres / sa 類型,依引擎不同)。先登入,確保你可以正常執行 SQL。

2)建立「應用程式用」的使用者

GCP國際帳號認證 不要直接讓應用使用管理員帳號。你要建立一個專用帳號,並只給它完成工作所需的最小權限。

概念上你會做三件事:

  • 建立使用者(user)
  • 設定密碼或憑證方式
  • 授予它對特定資料庫/Schema/資料表的權限

3)資料庫層級授權的設計原則

我建議你把權限分成三類思考:

  • 讀取權限:只允許 SELECT
  • 寫入權限:允許 INSERT/UPDATE/DELETE
  • 結構變更權限:允許 CREATE/ALTER(通常要更保守)

如果你是一般應用服務,大多數情況下它不需要 CREATE TABLE 或 ALTER。讓權限越少,你越不會在某次程式釋出後意外破壞結構。

4)授權對應到「你真正會用到的物件」

不要一開始就用太寬的模式。例如:

  • 你只用某個 schema,就只授權那個 schema
  • 你只用少數資料表,就只授權那些表
  • 你會建立新資料表,就用更嚴謹的方式授權(甚至由遷移工具處理)

很多人卡住的點就在於:資料庫授權看起來給了,但因為對象範圍沒對上(例如 schema 或資料表名稱拼錯、大小寫不一致、或授權跑到另一個資料庫)。

第五章:GCP IAM 權限與角色設定(資源管理與連線相關)

接下來把視角轉到 GCP IAM。很多人會以為「我在資料庫層級給了權限就行」,但在實務上,你可能還需要讓帳號能使用 Cloud SQL 的相關功能。

1)你可能需要的角色類型

依你要做的事情不同,IAM 會影響:

  • 你是否能建立或刪除 Cloud SQL 實例
  • 你是否能查看實例連線資訊
  • 你是否能執行與代理、憑證相關的操作

2)原則:用「最小必要」而不是給 owner

測試時可能覺得方便直接把權限給到高層角色,但正式環境你會後悔。更好的做法是:

  • 管理實例的權限與讓服務連線的權限分開
  • 不同人或不同服務帳號分配不同角色
  • GCP國際帳號認證 必要時用自訂角色,把權限精準切割

3)服務帳號與應用連線

如果你使用的是服務帳號(例如給 VM 或 GKE 的工作負載),通常你需要確保它具備正確的 Cloud SQL 連線/查詢所需能力。很多「明明資料庫使用者正確卻還是連不上」的問題,最後會回到服務帳號權限不足。

第六章:用 Cloud SQL Auth Proxy 的授權思路

Auth Proxy 是常見解法,它把連線細節包起來,讓你不必直接處理公開 IP 的暴露問題。權限的焦點也會更明確。

1)為什麼 Auth Proxy 能解決一部分權限問題

當你使用 Auth Proxy 時,網路層面的麻煩通常會減少(尤其在企業網路環境)。但它仍然需要你在 GCP 層級提供允許代理連到該實例的權限。

2)你要檢查的地方

  • 服務帳號是否有 Cloud SQL 相關存取權限
  • 代理啟動後是否能成功解析與連線到實例
  • 代理連到 DB 時使用的資料庫帳號是否有正確授權

你可以用這個順序排查:先確認代理能連到實例,再確認 DB 能登入,最後確認 SQL 權限。

第七章:常見錯誤與排查路徑(把時間省下來)

當你遇到問題,不要急著改一堆設定。你應該用「由外到內」的方式排查:先網路,再登入,最後授權。

錯誤一:連線逾時或被拒絕

典型原因:

  • 公開 IP 的來源 IP 沒加入白名單
  • 私有 IP 的 VPC 路由/防火牆沒打通
  • 使用錯誤的端點或連線參數(例如端口、區域、實例名稱)

解法:先在同一環境測試連線層,確認你真的能到達 Cloud SQL 實例。

錯誤二:登入失敗(密碼錯/帳號不存在)

典型原因:

  • 你在資料庫裡建立的使用者名稱拼錯或在錯誤資料庫
  • 密碼未更新、或應用程式讀到舊密碼
  • 你誤把管理員帳號當作應用帳號,導致後續權限設計不一致

解法:直接用管理員登入確認使用者存在,再核對憑證與應用設定。

錯誤三:登入成功但查詢沒有權限

這通常是授權範圍不對或角色不正確。常見狀況:

  • 只授權了資料庫,但沒有授權到 schema 或資料表
  • 只授權了 SELECT,卻執行了 INSERT 或 UPDATE
  • 需要動態建立物件時,卻沒有授權 CREATE/ALTER

解法:把你實際執行的 SQL(至少把報錯那句)對照權限模型,精準補上最小必要權限。

錯誤四:用戶端連線正常,但某些操作突然失敗

可能原因包括:

  • 你授權了某個角色,但應用沒有把角色正確套用(或被其他設定覆蓋)
  • 物件名稱大小寫或模式(schema)不一致
  • 資料庫遷移工具在部署後改了結構,你卻沒更新授權

解法:建立一套「權限隨遷移一起演進」的流程,例如在每次 schema 變更時由遷移腳本或管理腳本同步更新授權。

第八章:一套實務建議的授權流程(照做就能跑通)

下面我給你一個我在專案中常用、成功率高的流程。你可以把它當成檢查清單。

步驟 1:先確保能連線到實例

用最簡單的方式測試:從你的開發環境連到 Cloud SQL,先確認網路與端點沒有問題。若這一步都過不了,後面全部白做。

步驟 2:建立最小化應用使用者

在 DB 裡建立單獨的應用使用者,並避免用管理員帳號。先讓它能登入,接著再逐步增加權限。

步驟 3:按功能分配權限(讀/寫/管理拆開)

如果你的應用包含不同模組(例如報表只讀、訂單服務可寫),你可以給不同帳號或不同角色,讓權限更安全,也更容易排查問題。

步驟 4:授權只覆蓋必要範圍

從一開始就把 scope 控制在目標資料庫與目標 schema/資料表。不要用全庫全表這種做法撐過去。

步驟 5:把 IAM 也納入清單

若你使用代理或有工作負載要連到 Cloud SQL,確認服務帳號擁有必要權限。你可以把它視為「連線的鑰匙」。

步驟 6:建立可持續的更新方式

當你之後新增資料表、切換 schema、或導入遷移工具時,請同步更新授權。否則下一次部署後就會遇到「只差一個權限」的尷尬錯誤。

第九章:安全性與可維運性:把風險降到最低

權限教學常常只講「怎麼給」,卻不講「怎麼避免給過頭」。但在 Cloud SQL 這種資料敏感的系統裡,可維運性與安全性幾乎是同一件事。

1)避免把管理員權限交給應用

管理員權限意味著你把「資料庫的最大破壞力」交給程式。正常應用不需要那麼高的能力。

2)用版本化的方式管理授權腳本

把授權與角色設定寫成腳本(或至少文件化步驟),並隨專案版本更新。這樣你在回滾或重建環境時才不會手忙腳亂。

3)定期檢查:誰有什麼權限

當人事或專案結構變動時,很容易留下過度權限。每一段時間檢查帳號列表與角色綁定,才能確保你真的在維持最小必要。

第十章:把教學收斂成一句話

想要完成「GCP Cloud SQL 數據庫開通權限設定教學」,最重要的是把問題分成三段:先讓你能連到實例,再讓你能登入使用者,最後讓你能在資料庫做該做的事。每一步只處理一層問題,你就不會在同一個報錯訊息上來回猜測。

結語:真正省時間的不是技巧,是順序

Cloud SQL 的權限設定看似繁瑣,但它其實遵循同一個邏輯:外層(網路與 GCP)決定你進不進得來,內層(DB 使用者與授權)決定你能做什麼。當你用正確順序處理,就會發現很多報錯都能快速定位。

如果你要把這篇文章落地,我建議你直接依照清單操作:先測連線、再建應用使用者、再用最小權限逐步補齊,並把授權更新納入後續部署流程。做到這一步,你的 Cloud SQL 不只是「能用」,而是「用得穩、用得安全、也用得久」。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系