使用 Cloud SQL 驗證 Proxy 連線

本頁說明如何使用 Cloud SQL Auth Proxy 連線至 Cloud SQL 執行個體。

如要進一步瞭解 Cloud SQL 驗證 Proxy 的運作方式,請參閱「關於 Cloud SQL 驗證 Proxy」一文。

總覽

建議使用 Cloud SQL Auth Proxy 連線至 Cloud SQL 執行個體。Cloud SQL 驗證 Proxy:

  • 適用於公開和私人 IP 端點
  • 使用使用者或服務帳戶的憑證驗證連線
  • 將連線包裝在 SSL/TLS 層中,並授權給 Cloud SQL 執行個體

部分 Google Cloud 服務和應用程式會使用 Cloud SQL Auth Proxy,透過加密和授權提供公開 IP 路徑的連線,包括:

Google Kubernetes Engine 中執行的應用程式可以使用 Cloud SQL 驗證 Proxy 連線。

如需基本使用簡介,請參閱使用 Cloud SQL 驗證 Proxy 的快速入門導覽課程

您也可以使用 mysql 用戶端從本機電腦或 Compute Engine 連線,無論是否使用 Cloud SQL 驗證 Proxy 皆可。

事前準備

連線至 Cloud SQL 執行個體前,請先完成下列工作:

    • 如果是使用者或服務帳戶,請確認帳戶具備 Cloud SQL 用戶端角色。這個角色包含 cloudsql.instances.connect 權限,可授權主體連線至專案中的所有 Cloud SQL 執行個體。

      前往「IAM」頁面

    • 您也可以在 IAM 政策繫結中加入 IAM 條件,只允許帳戶連線至一個特定的 Cloud SQL 執行個體。
  1. Enable the Cloud SQL Admin API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. 安裝並初始化 gcloud CLI
  3. (選用步驟) 安裝 Cloud SQL 驗證 Proxy Docker 用戶端

下載 Cloud SQL 驗證 Proxy

Linux 64 位元

  1. 下載 Cloud SQL 驗證 Proxy:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.linux.amd64
  2. 將 Cloud SQL 驗證 Proxy 設為允許執行:
    chmod +x cloud-sql-proxy

Linux 32 位元

  1. 下載 Cloud SQL 驗證 Proxy:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.linux.386
  2. 如果找不到 curl 指令,請執行 sudo apt install curl,然後重複下載指令。
  3. 將 Cloud SQL 驗證 Proxy 設為允許執行:
    chmod +x cloud-sql-proxy

macOS 64 位元

  1. 下載 Cloud SQL 驗證 Proxy:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.darwin.amd64
  2. 將 Cloud SQL 驗證 Proxy 設為允許執行:
    chmod +x cloud-sql-proxy

Mac M1

  1. 下載 Cloud SQL 驗證 Proxy:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.darwin.arm64
      
  2. 將 Cloud SQL 驗證 Proxy 設為允許執行:
      chmod +x cloud-sql-proxy
      

Windows 64 位元

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.x64.exe 上按一下滑鼠右鍵,然後選取「另存連結為」來下載 Cloud SQL Auth Proxy。將檔案重新命名為 cloud-sql-proxy.exe

Windows 32 位元

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.x86.exe 上按一下滑鼠右鍵,然後選取「另存連結為」來下載 Cloud SQL Auth Proxy。將檔案重新命名為 cloud-sql-proxy.exe

Cloud SQL 驗證 Proxy Docker 映像檔

Cloud SQL 驗證 Proxy 有不同的容器映像檔,例如 distrolessalpinebuster。預設的 Cloud SQL 驗證 Proxy 容器映像檔使用 distroless,其中不含任何殼層。如需 Shell 或相關工具,請根據 alpinebuster 下載映像檔。詳情請參閱「Cloud SQL Auth Proxy 容器映像檔」。

您可以使用 Docker 執行下列指令,將最新映像檔提取至本機電腦:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2

其他 OS

如果您的作業系統不在上述說明內,可以從原始碼編譯 Cloud SQL 驗證 Proxy

啟動 Cloud SQL 驗證 Proxy

根據您的語言和環境,您可以使用 TCP 通訊端、Unix 通訊端或 Cloud SQL Auth Proxy Docker 映像檔啟動 Cloud SQL Auth Proxy。Cloud SQL 驗證 Proxy 二進位檔會連線至命令列上指定的一或多個 Cloud SQL 執行個體,並以 TCP 或 Unix Socket 開啟本機連線。其他應用程式和服務 (例如應用程式程式碼或資料庫管理用戶端工具) 可以透過這些 TCP 或 Unix Socket 連線,連線至 Cloud SQL 執行個體。

TCP 通訊端

如果是 TCP 連線,Cloud SQL 驗證 Proxy 預設會監聽 localhost(127.0.0.1)。因此,當您為執行個體指定 --port PORT_NUMBER 時,本機連線會位於 127.0.0.1:PORT_NUMBER

或者,您也可以為本機連線指定其他位址。 舉例來說,以下說明如何讓 Cloud SQL 驗證 Proxy 在 0.0.0.0:1234 監聽本機連線:

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. 複製INSTANCE_CONNECTION_NAME。您可以在Google Cloud 控制台的執行個體「總覽」頁面中找到這個位址,也可以執行下列指令:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    例如 myproject:myregion:myinstance

  2. 如果執行個體已設定公開和私人 IP,而您想讓 Cloud SQL Auth Proxy 使用私人 IP 位址,則必須在啟動 Cloud SQL Auth Proxy 時提供下列選項:
    --private-ip
  3. 如果您使用服務帳戶來驗證 Cloud SQL Auth Proxy,請記下您之前建立服務帳戶時,私密金鑰檔案在用戶端機器上的建立位置。
  4. 啟動 Cloud SQL 驗證 Proxy。

    以下是幾個可能的 Cloud SQL 驗證 Proxy 叫用字串:

    • 使用 Cloud SDK 驗證:
      ./cloud-sql-proxy --port 3306 INSTANCE_CONNECTION_NAME
      請勿指定使用中的通訊埠,例如本機資料庫伺服器正在使用的通訊埠。
    • 使用服務帳戶並明確納入執行個體連線的名稱 (建議用於實際工作環境):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    如要進一步瞭解 Cloud SQL 驗證 Proxy 選項,請參閱驗證 Cloud SQL 驗證 Proxy 的選項

Unix 通訊端

Cloud SQL Auth Proxy 可以監聽 Unix 通訊端,這是 Posix 標準機制,可使用資料夾管理在同一部主機上執行的兩個程序之間的通訊。使用 Unix 通訊端的優點是安全性更高且延遲時間較短,但您無法從外部機器存取 Unix 通訊端。

如要建立及使用 Unix 通訊端,目標目錄必須存在,且 Cloud SQL Auth Proxy 和應用程式都必須具備讀取和寫入權限。

  1. 複製INSTANCE_CONNECTION_NAME。您可以在Google Cloud 控制台的執行個體「總覽」頁面中找到這個位址,也可以執行下列指令:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    例如 myproject:myregion:myinstance

  2. 建立 Cloud SQL 驗證 Proxy 通訊端運作的目錄:
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. 如果您使用服務帳戶來驗證 Cloud SQL Auth Proxy,請記下您之前建立服務帳戶時,私密金鑰檔案在用戶端機器上的建立位置。
  4. 開啟新的 Cloud Shell 終端機視窗,然後啟動 Cloud SQL 驗證 Proxy。

    以下是幾個可能的 Cloud SQL 驗證 Proxy 叫用字串:

    • 使用 Google Cloud SDK 驗證:
      ./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
    • 使用服務帳戶:
        ./cloud-sql-proxy --unix-socket /cloudsql
        --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    在 Cloud Shell 終端機中啟動 Cloud SQL 驗證 Proxy,這樣即可避免 Proxy 的輸出內容與其他程式的輸出內容相互混雜,以便您監控 Proxy 的輸出內容。

    如要進一步瞭解 Cloud SQL 驗證 Proxy 選項,請參閱驗證 Cloud SQL 驗證 Proxy 的選項

Docker

如要在 Docker 容器中執行 Cloud SQL 驗證 Proxy,請使用 Google Container Registry 提供的 Cloud SQL 驗證 Proxy Docker 映像檔。

您可以使用 TCP 通訊端或 Unix 通訊端啟動 Cloud SQL Auth Proxy,方法是執行下列指令。這些選項會使用 INSTANCE_CONNECTION_NAME 做為連線字串,識別 Cloud SQL 執行個體。您可以在 Google Cloud console 中,前往執行個體的「Overview」(總覽) 頁面找到 INSTANCE_CONNECTION_NAME,也可以執行下列指令:

gcloud sql instances describe INSTANCE_NAME

例如 myproject:myregion:myinstance

根據您的語言與環境,您可以使用 TCP 通訊端或 Unix 通訊端啟動 Cloud SQL Auth Proxy。以 Java 程式設計語言編寫的應用程式或 Windows 環境都不支援 Unix 通訊端。

使用 TCP 通訊端

docker run -d \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  -p 127.0.0.1:3306:3306 \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2 \\
  --address 0.0.0.0 --port 3306 \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

如果您要使用 Compute Engine 執行個體提供的憑證,請勿加入 --credentials-file 參數與 -v PATH_TO_KEY_FILE:/path/to/service-account-key.json 這一行指令列。

請一律在 -p 中指定 127.0.0.1 前置字串,以防 Cloud SQL 驗證 Proxy 暴露到本機主機之外。執行個體參數中必須要有「0.0.0.0」,才能讓 Docker 容器以外的環境存取連接埠。

使用 Unix 通訊端

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

如果您要使用 Compute Engine 執行個體提供的憑證,請勿加入 --credentials-file 參數與 -v PATH_TO_KEY_FILE:/path/to/service-account-key.json 這一行指令列。

如果您要使用將容器最佳化的映像檔,請使用可寫入的目錄來取代 /cloudsql,例如:

-v /mnt/stateful_partition/cloudsql:/cloudsql

您可以指定多個執行個體,並以半形逗號分隔。您也可以使用 Compute Engine 中繼資料,以動態方式決定要連線的目標執行個體。進一步瞭解 Cloud SQL 驗證 Proxy 參數。

連線至 mysql 用戶端

  1. 前往 MySQL Community Server 下載頁面,下載您的平台適用的 MySQL Community Server。
    Community Server 包含 MySQL 用戶端。
  2. 按照下載頁面上的指示安裝 Community Server。

如要進一步瞭解如何安裝 MySQL,請參閱「安裝及升級 MySQL」。

使用的連線字串取決於您是使用 TCP 通訊端、UNIX 通訊端還是 Docker 啟動 Cloud SQL 驗證 Proxy。

TCP 通訊端

  1. 啟動 mysql 用戶端:
    mysql -u USERNAME -p --host 127.0.0.1
    如果要連線至 MySQL 8.4 執行個體,請使用下列指令:
    mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key

    使用 TCP Socket 連線時,系統會透過 127.0.0.1存取 Cloud SQL 驗證 Proxy。

  2. 系統顯示提示時,請輸入密碼。
  3. 系統隨即會顯示 mysql 提示字元。

使用 Unix 通訊端

  1. 啟動 mysql 用戶端:
    mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME

    注意:您無法透過 UNIX 通訊端連線,使用 Cloud SQL Auth Proxy 連線至 MySQL 8.4 執行個體。

  2. 輸入密碼。
  3. 系統隨即會顯示 mysql 提示字元。

需要協助嗎?如需針對 Proxy 進行疑難排解,請參閱「排解 Cloud SQL 驗證 Proxy 連線問題」,或前往 Cloud SQL 支援頁面。

連結應用程式

任何可讓您連線至 Unix 或 TCP 通訊端的程式語言,都能用來連線至 Cloud SQL Auth Proxy。以下是 GitHub 完整範例中的一些程式碼片段,可協助您瞭解這些程式碼片段如何在應用程式中搭配運作。

其他主題

Cloud SQL 驗證 Proxy 指令列引數

上述範例涵蓋最常見的用途,但 Cloud SQL Auth Proxy 也有其他設定選項,可透過指令列引數設定。如需指令列引數的說明,請使用 --help 旗標查看最新說明文件:

./cloud-sql-proxy --help

如需如何使用 Cloud SQL 驗證 Proxy 指令列選項的其他範例,請參閱 Cloud SQL 驗證 Proxy GitHub 存放區中的 README

驗證 Cloud SQL 驗證 Proxy 的選項

所有這些選項都會使用 INSTANCE_CONNECTION_NAME 做為連線字串,識別 Cloud SQL 執行個體。您可以在 Google Cloud console 中,前往執行個體的「Overview」(總覽) 頁面找到 INSTANCE_CONNECTION_NAME,也可以執行下列指令:

gcloud sql instances describe --project PROJECT_ID INSTANCE_CONNECTION_NAME

例如:gcloud sql instances describe --project myproject myinstance

其中部分選項會使用 JSON 憑證檔案,內含帳戶的 RSA 私密金鑰。如需如何為服務帳戶建立 JSON 憑證檔案的操作說明,請參閱「建立服務帳戶」。

Cloud SQL 驗證 Proxy 提供多種驗證替代方案,視您的環境而定。Cloud SQL 驗證 Proxy 會依下列順序檢查每個項目,並使用找到的第一個項目嘗試驗證:

  1. credentials-file 旗標提供的憑證。

    使用