本頁面說明如何使用 Cloud SQL 驗證 Proxy 連線至 Cloud SQL 執行個體。
如要進一步瞭解 Cloud SQL 驗證 Proxy 的運作方式,請參閱「關於 Cloud SQL 驗證 Proxy」。
總覽
建議您使用 Cloud SQL Auth Proxy 連線至 Cloud SQL 執行個體。Cloud SQL 驗證 Proxy:
- 可搭配公開和私人 IP 端點使用
- 使用使用者或服務帳戶的憑證驗證連線
- 在 Cloud SQL 執行個體授權的 SSL/TLS 層中包裝連線
部分 Google Cloud 服務和應用程式會使用 Cloud SQL Auth Proxy,為公開 IP 路徑提供加密和授權連線,包括:
在 Google Kubernetes Engine 中執行的應用程式可以使用 Cloud SQL 驗證 Proxy 連線。
請參閱使用 Cloud SQL 驗證 Proxy 的快速入門導覽課程,瞭解基本用法。
您也可以使用 sqlcmd 用戶端,從本機機器或 Compute Engine連線,不論是否使用 Cloud SQL 驗證 Proxy 皆可。
事前準備
請先完成下列步驟,才能連線至 Cloud SQL 執行個體:
-
- 如果是使用者或服務帳戶,請確認帳戶具備 Cloud SQL 用戶端角色。這個角色包含
cloudsql.instances.connect
權限,可授權管理主體連線至專案中的所有 Cloud SQL 執行個體。 - 您可以選擇在 IAM 政策繫結中加入 IAM 條件,授予帳戶僅連線至一個特定 Cloud SQL 執行個體的權限。
- 如果是使用者或服務帳戶,請確認帳戶具備 Cloud SQL 用戶端角色。這個角色包含
-
Enable the Cloud SQL Admin API.
- 安裝並初始化 gcloud CLI。
- (非必要) 安裝 Cloud SQL 驗證 Proxy Docker 用戶端。
下載 Cloud SQL 驗證 Proxy
Linux 64 位元
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.linux.amd64
- 將 Cloud SQL 驗證 Proxy 設為可執行:
chmod +x cloud-sql-proxy
Linux 32 位元
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.linux.386
- 如果找不到
curl
指令,請執行sudo apt install curl
並重複下載指令。 - 將 Cloud SQL 驗證 Proxy 設為可執行:
chmod +x cloud-sql-proxy
macOS 64 位元
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.darwin.amd64
- 將 Cloud SQL 驗證 Proxy 設為可執行:
chmod +x cloud-sql-proxy
Mac M1
- 下載 Cloud SQL 驗證 Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.darwin.arm64
- 將 Cloud SQL 驗證 Proxy 設為可執行:
chmod +x cloud-sql-proxy
Windows 64 位元
在 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.x64.exe 上按一下滑鼠右鍵,然後選取「Save Link As」(另存連結為),即可下載 Cloud SQL 驗證 Proxy。將檔案重新命名為cloud-sql-proxy.exe
。Windows 32 位元
在 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.x86.exe 上按一下滑鼠右鍵,然後選取「Save Link As」(另存連結為),即可下載 Cloud SQL 驗證 Proxy。將檔案重新命名為cloud-sql-proxy.exe
。Cloud SQL 驗證 Proxy Docker 映像檔
Cloud SQL 驗證 Proxy 有不同的容器映像檔,例如 distroless
、alpine
和 buster
。預設的 Cloud SQL 驗證 Proxy 容器映像檔會使用 distroless
,其中不含任何殼層。如果您需要殼層或相關工具,請下載以 alpine
或 buster
為基礎的映像檔。詳情請參閱「Cloud SQL 驗證 Proxy 容器映像檔」。
您可以使用下列指令,透過 Docker 將最新映像檔提取至本機電腦:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.16.0
其他作業系統
如果是未列於上述說明的其他作業系統,您可以從原始碼編譯 Cloud SQL 驗證 Proxy。啟動 Cloud SQL 驗證 Proxy
您可以使用 TCP 套接字或 Cloud SQL 驗證 Proxy Docker 映像檔啟動 Cloud SQL 驗證 Proxy。Cloud SQL 驗證 Proxy 二進位檔會連線至指令列上指定的一或多個 Cloud SQL 執行個體,並以 TCP 通訊端的形式開啟本機連線。其他應用程式和服務 (例如應用程式程式碼或資料庫管理用戶端工具) 可以透過該 TCP 套接字連線連線至 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
複製 INSTANCE_CONNECTION_NAME。您可以在 Google Cloud 主控台的「總覽」頁面中找到此值,也可以執行下列指令來取得:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
例如 myproject:myregion:myinstance。
- 如果執行個體已設定公開和私人 IP,而您想讓 Cloud SQL Auth Proxy 使用私人 IP位址,則必須在啟動 Cloud SQL Auth Proxy 時提供下列選項:
--private-ip
- 如果您使用服務帳戶驗證 Cloud SQL 驗證 Proxy,請記下您建立服務帳戶時,私密金鑰檔案在用戶端機器上的建立位置。
- 啟動 Cloud SQL 驗證 Proxy。
以下是幾個可能的 Cloud SQL 驗證 Proxy 叫用字串:
- 使用 Cloud SDK 驗證:
請勿指定使用中的通訊埠,例如本機資料庫伺服器正在使用的通訊埠。./cloud-sql-proxy --port 1433 INSTANCE_CONNECTION_NAME
- 使用服務帳戶並明確加入執行個體連線的名稱 (建議用於實際工作環境):
./cloud-sql-proxy \ --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &
如要進一步瞭解 Cloud SQL 驗證 Proxy 選項,請參閱「驗證 Cloud SQL 驗證 Proxy 的選項」。
- 使用 Cloud SDK 驗證:
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 主控台的「總覽」頁面中,找到執行個體的 INSTANCE_CONNECTION_NAME,也可以執行下列指令:
gcloud sql instances describe INSTANCE_NAME
例如 myproject:myregion:myinstance
。
根據您的語言與環境,您可以使用 TCP 通訊端或 Unix 通訊端啟動 Cloud SQL 驗證 Proxy。以 Java 程式設計語言編寫的應用程式或 Windows 環境都不支援 Unix 通訊端。
使用 TCP 通訊端
docker run -d \\ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\ -p 127.0.0.1:1433:1433 \\ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.16.0 \\ --address 0.0.0.0 --port 1433 \\ --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.16.0 --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 參數。
連線至 sqlcmd 用戶端
Debian/Ubuntu
如果是 Debian/Ubuntu,請 安裝適用的 SQL Server 指令列工具。
CentOS/RHEL
針對 CentOS/RHEL,請 安裝適用的 SQL Server 指令列工具。
openSUSE
如果是 openSUSE,請 安裝適用的 SQL Server 指令列工具。
其他平台
使用的連線字串取決於您是使用 TCP 通訊端還是 Docker 啟動 Cloud SQL 驗證 Proxy。
TCP 通訊端
- 啟動 sqlcmd 用戶端:
sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
使用 TCP 通訊端連線時,您會透過
127.0.0.1
存取 Cloud SQL 驗證 Proxy。 - 系統顯示提示時,請輸入密碼。
- 畫面上會顯示 sqlcmd 提示。
需要協助嗎?如需針對 Proxy 進行疑難排解,請參閱「Cloud SQL 驗證 Proxy 連線疑難排解」一文,或造訪 Cloud SQL 支援頁面。
連結至應用程式
您可以使用任何可連線至 TCP 通訊端的程式語言,連線至 Cloud SQL 驗證 Proxy。以下是 GitHub 完整範例中的程式碼片段,可協助您瞭解這些程式碼片段如何在應用程式中搭配運作。
透過 TCP 連線
Cloud SQL 驗證 Proxy 叫用陳述式:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME &
Python
如要在網頁應用程式內容中查看此程式碼片段,請參閱 GitHub 上的 README 檔案。
Java
如要在網頁應用程式的內容中查看此程式碼片段,請參閱 GitHub 上的 README 檔案。
注意:
- CLOUD_SQL_CONNECTION_NAME 應以 <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME> 的格式表示
- 使用引數 ipTypes=PRIVATE 會強制 SocketFactory 連線至執行個體的相關聯私人 IP
- 請參閱 這裡 的 JDBC 通訊端處理站版本需求,瞭解 pom.xml 檔案的相關規定。
Node.js
如要在網頁應用程式的內容中查看此程式碼片段,請參閱 GitHub 上的 README。
Go
如要在網頁應用程式內容中查看此程式碼片段,請參閱 GitHub 上的 README 檔案。
C#
如要在網頁應用程式的內容中查看此程式碼片段,請參閱 GitHub 上的 README 檔案。
Ruby
如要在網頁應用程式的內容中查看此程式碼片段,請參閱 GitHub 上的 README。
PHP
如要在網頁應用程式的內容中查看此程式碼片段,請參閱 GitHub 上的 README。
其他主題
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 主控台的「總覽」頁面中,找到執行個體的 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 Auth Proxy 提供多種驗證方法,具體取決於您的環境。Cloud SQL 驗證 Proxy 會依下列順序檢查下列各項項目,並使用找到的第一個項目嘗試驗證:
憑證檔案旗標提供的憑證。
使用服務帳戶建立及下載相關聯的 JSON 檔案,並在啟動 Cloud SQL 授權 Proxy 時,將--credentials-file
旗標設為檔案路徑。服務帳戶必須具備 Cloud SQL 執行個體的必要權限。如要在指令列上使用這個選項,請將
--credentials-file
旗標設為 JSON 憑證檔案的路徑和檔案名稱,然後叫用cloud-sql-proxy
指令。路徑可以是絕對路徑,也可以相對於目前工作目錄。例如:./cloud-sql-proxy --credentials-file PATH_TO_KEY_FILE \ INSTANCE_CONNECTION_NAME
如需將身分與存取權管理角色新增至服務帳戶的詳細操作說明,請參閱「為服務帳戶授予角色」一文。
如要進一步瞭解 Cloud SQL 支援的角色,請參閱 Cloud SQL 的 IAM 角色。
存取權杖提供的憑證。
建立存取權杖,並在--token
標記設為 OAuth 2.0 存取權杖的情況下,叫用cloud-sql-proxy
指令。例如:./cloud-sql-proxy --token ACCESS_TOKEN \ INSTANCE_CONNECTION_NAME
環境變數提供的憑證。
這個選項與使用--credentials-file
標記類似,只是您需要指定在GOOGLE_APPLICATION_CREDENTIALS
環境變數中設定的 JSON 憑證檔案,而非使用--credentials-file
指令列引數。已驗證的 gcloud CLI 用戶端憑證。
如果您已安裝 gcloud CLI,並使用個人帳戶進行驗證,Cloud SQL 驗證 Proxy 就能使用相同的帳戶憑證。這個方法對於啟動開發環境特別有用。
如要讓 Cloud SQL 驗證 Proxy 使用 gcloud CLI 憑證,請使用下列指令驗證 gcloud CLI:
gcloud auth application-default login
與 Compute Engine 執行個體相關聯的憑證。
如果您是從 Compute Engine 執行個體連線至 Cloud SQL,Cloud SQL 驗證 Proxy 可以使用與 Compute Engine 執行個體相關聯的服務帳戶。如果服務帳戶具備 Cloud SQL 執行個體的必要權限,Cloud SQL 驗證 Proxy 就會成功驗證。如果 Compute Engine 執行個體與 Cloud SQL 執行個體位於相同專案,Compute Engine 執行個體的預設服務帳戶就會具備驗證 Cloud SQL 驗證 Proxy 所需的權限。如果兩個執行個體位於不同專案,您必須將 Compute Engine 執行個體的服務帳戶新增至 Cloud SQL 執行個體所屬專案。
環境的預設服務帳戶
如果 Cloud SQL Auth Proxy 無法在先前提及的任何位置找到憑證,就會依循「設定伺服器對伺服器正式版應用程式的驗證作業」一文所述的邏輯。有些環境 (例如 Compute Engine、App Engine 等) 會提供預設服務帳戶,讓應用程式可用來進行預設驗證。如果您使用預設服務帳戶,該帳戶必須具備角色和權限中所述的權限。 如要進一步瞭解 Google Cloud 的驗證方法,請參閱驗證總覽。
建立服務帳戶
- 前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
- 選取含有 Cloud SQL 執行個體的專案。
- 按一下「建立服務帳戶」。
- 在「Service account name」欄位中,輸入服務帳戶的描述性名稱。
- 將「服務帳戶 ID」變更為專屬且可辨識的值,然後點選「建立並繼續」。
-
按一下「請選取角色」欄位,然後選取下列其中一個角色:
- Cloud SQL > Cloud SQL 用戶端
- Cloud SQL > Cloud SQL 編輯器
- Cloud SQL > Cloud SQL 管理員
- 按一下「Done」(完成),即完成建立服務帳戶。
- 按一下新服務帳戶的動作選單,然後選取「管理金鑰」。
- 依序點選「Add key」下拉式選單和「Create new key」。
-
確認金鑰類型為 JSON,然後按一下「建立」。
私密金鑰檔案會下載到您的機器中,您可以將它移到其他位置。請妥善保護這個金鑰檔案。
使用私人 IP 的 Cloud SQL 驗證 Proxy
如要使用私人 IP 連線至 Cloud SQL 執行個體,Cloud SQL 驗證 Proxy 必須位於可存取與執行個體相同虛擬私人雲端網路的資源中。
Cloud SQL Auth Proxy 會使用 IP 連線至您的 Cloud SQL 執行個體。根據預設,Cloud SQL 驗證 Proxy 會嘗試使用公開的 IPv4 位址進行連線。
如果您的 Cloud SQL 執行個體只有私人 IP,或是已設定公開和私人 IP,而您想讓 Cloud SQL Auth Proxy 使用私人 IP 位址,則必須在啟動 Cloud SQL Auth Proxy 時提供下列選項:
--private-ip
在已啟用 Private Service Connect 的執行個體中使用 Cloud SQL 驗證 Proxy
您可以使用 Cloud SQL 驗證 Proxy 連線至已啟用 Private Service Connect 的 Cloud SQL 執行個體。
Cloud SQL Auth Proxy 是連接器,可提供安全的存取方式存取這個執行個體,而不需要授權網路或設定 SSL。
如要允許 Cloud SQL 驗證 Proxy 用戶端連線,您必須設定 DNS 記錄,與為執行個體提供的建議 DNS 名稱 相符。DNS 記錄是 DNS 資源與網域名稱之間的對應。
如要進一步瞭解如何使用 Cloud SQL Auth Proxy 連線至已啟用 Private Service Connect 的執行個體,請參閱「使用 Cloud SQL Auth Proxy 連線」一文。
在個別程序中執行 Cloud SQL 驗證 Proxy
在單獨的 Cloud Shell 終端機程序中執行 Cloud SQL 驗證 Proxy 可能很有用,可避免其控制台輸出內容與其他程式的輸出內容混淆。請使用下方顯示的語法,在個別程序中叫用 Cloud SQL 驗證 Proxy。
Linux
在 Linux 或 macOS 上,請在指令列上使用尾隨 &
,在個別程序中啟動 Cloud SQL 驗證 Proxy:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME
--credentials-file PATH_TO_KEY_FILE &
Windows
在 Windows PowerShell 中,使用 Start-Process
指令在個別程序中啟動 Cloud SQL 驗證 Proxy:
Start-Process --filepath "cloud-sql-proxy.exe"
--ArgumentList "
--credentials-file PATH_TO_KEY_FILEINSTANCE_CONNECTION_NAME"
在 Docker 容器中執行 Cloud SQL 驗證 Proxy
如要在 Docker 容器中執行 Cloud SQL 驗證 Proxy,請使用可從 Google Container Registry 取得的 Cloud SQL 驗證 Proxy Docker 映像檔。您可以使用下列指令安裝 Cloud SQL 驗證 Proxy Docker 映像檔:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.16.0
您可以使用 TCP 通訊端或 Unix 通訊端啟動 Cloud SQL Auth Proxy,並使用下列指令。
TCP 通訊端
docker run -d \ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \ -p 127.0.0.1:1433:1433 \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.16.0 \ --address 0.0.0.0 \ --credentials-file /path/to/service-account-key.json \ INSTANCE_CONNECTION_NAME
Unix 通訊端
docker run -d \ -v /PATH_TO_HOST_TARGET:/PATH_TO_GUEST_TARGET \ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.16.0 --unix-socket /cloudsql \ --credentials-file /path/to/service-account-key.json/PATH_TO_KEY_FILE \ INSTANCE_CONNECTION_NAME
如果您要使用將容器最佳化的映像檔,請使用可寫入的目錄來取代 /cloudsql
,例如:
v /mnt/stateful_partition/cloudsql:/cloudsql
如果您要使用 Compute Engine 執行個體提供的憑證,請勿加入 credential_file
參數和 -v PATH_TO_KEY_FILE:/path/to/service-account-key.json
這一行指令列。
以服務形式執行 Cloud SQL 驗證 Proxy
您可以將 Cloud SQL 驗證 Proxy 設為背景服務,用於本機開發和實際工作負載。在開發期間,如果需要存取 Cloud SQL 執行個體,您可以在背景啟動服務,並在完成後停止服務。
對於實際工作負載,Cloud SQL 驗證 Proxy 目前不提供內建的支援,無法以 Windows 服務的形式執行,但可使用第三方服務管理員以服務形式執行。舉例來說,您可以使用 NSSM 將 Cloud SQL 驗證 Proxy 設定為 Windows 服務,NSSM 會監控 Cloud SQL 驗證 Proxy,並在該 Proxy 停止回應時自動重新啟動。詳情請參閱 NSSM 說明文件。
在需要 SSL 時連線
強制使用 Cloud SQL 驗證 Proxy
使用 ConnectorEnforcement 在 Cloud SQL 中啟用 Cloud SQL 驗證 Proxy。
如果您使用的是啟用 Private Service Connect 的執行個體,則有以下限制。如果執行個體已啟用連接器強制執行,您就無法為該執行個體建立唯讀備用資源。同樣地,如果執行個體有唯讀備用資源,就無法為該執行個體啟用連接器強制執行。
gcloud
下列指令會強制使用 Cloud SQL 連接器。
gcloud sql instances patch INSTANCE_NAME \ --connector-enforcement REQUIRED
如要停用強制執行,請使用下列程式碼行:
--connector-enforcement NOT_REQUIRED
更新不會觸發重新啟動。
REST v1
下列指令會強制使用 Cloud SQL 連接器
使用任何要求資料之前,請先替換以下項目:
- project-id:專案 ID。
- instance-id:執行個體 ID。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
JSON 要求主體:
{ "settings": { "connectorEnforcement": "REQUIRED" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
如要停用強制執行功能,請改用 "connectorEnforcement": "NOT_REQUIRED"
。更新不會觸發重新啟動。
REST v1beta4
下列指令會強制使用 Cloud SQL 連接器。
使用任何要求資料之前,請先替換以下項目:
- project-id:專案 ID。
- instance-id:執行個體 ID。
HTTP 方法和網址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
JSON 要求主體:
{ "settings": { "connectorEnforcement": "REQUIRED" } }
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
如要停用強制執行功能,請改用 "connectorEnforcement": "NOT_REQUIRED"
。更新不會觸發重新啟動。
使用 Cloud SQL 驗證 Proxy 的提示
使用 Cloud SQL 驗證 Proxy 連線至多個執行個體
您可以使用一個本機 Cloud SQL 驗證 Proxy 用戶端連線至多個 Cloud SQL 執行個體。執行此動作的方式視您使用的是 Unix 通訊端還是 TCP 而定。
TCP 通訊端
使用 TCP 連線時,您會在電腦上指定一個通訊埠,讓 Cloud SQL 驗證 Proxy 監聽每個 Cloud SQL 執行個體。連線至多個 Cloud SQL 執行個體時,每個指定的通訊埠都必須是唯一的,且可在您的電腦上使用。
例如:
# Start the Cloud SQL Auth Proxy to connect to two different Cloud SQL instances. # Give the Cloud SQL Auth Proxy a unique port on your machine to use for each Cloud SQL instance. ./cloud-sql-proxy "myProject:us-central1:myInstance?port=1433" \ "myProject:us-central1:myInstance2?port=1234" # Connect to "myInstance" using port 1433 on your machine: sqlcmd -U myUser -S "127.0.0.1,1433" # Connect to "myInstance2" using port 1234 on your machine: sqlcmd -U myUser -S "127.0.0.1,1234"
排解 Cloud SQL 驗證 Proxy 連線問題
Cloud SQL 驗證 Proxy Docker 映像檔是以特定版本的 Cloud SQL 驗證 Proxy 為基礎。當 Cloud SQL 驗證 Proxy 推出新版本時,請拉取新版本的 Cloud SQL 驗證 Proxy Docker 映像檔,以便保持環境的最新狀態。您可以檢查 Cloud SQL Auth Proxy GitHub 版本頁面查看 Cloud SQL Auth Proxy 的最新版本。
如果您在使用 Cloud SQL 驗證 Proxy 連線至 Cloud SQL 執行個體時遇到問題,請嘗試以下幾種方法找出問題原因。
請確認您使用 IP 位址連線至執行個體,而非寫入端點。
檢查 Cloud SQL 驗證 Proxy 的輸出內容。
通常,Cloud SQL 驗證 Proxy 的輸出內容可協助您判斷問題來源,以及如何解決問題。將輸出傳送至檔案,或者監看您啟動 Cloud SQL 驗證 Proxy 時所使用的 Cloud Shell 終端機。
如果您在使用服務帳戶驗證 Cloud SQL 驗證 Proxy 時發生
403 notAuthorized
錯誤,請確定服務帳戶擁有正確的權限。您可在「IAM」(身分與存取權管理) 頁面搜尋服務帳戶的 ID 以進行檢查。必須具備
cloudsql.instances.connect
權限。Cloud SQL Admin
、Client
和Editor
這些預先定義的角色具備這項權限。如果您是從 App Engine 連線,且收到
403 notAuthorized
錯誤,請檢查app.yaml
值cloud_sql_instances
是否有拼寫錯誤或不正確的執行個體連線名稱。執行個體連線名稱的格式一律為PROJECT:REGION:INSTANCE
。此外,請確認 App Engine 服務帳戶 (例如 [email protected]) 具有 Cloud SQL 用戶端身分與存取權管理角色。
如果 App Engine 服務位於一個專案 (專案 A),而資料庫位於另一個專案 (專案 B),則這項錯誤表示 App Engine 服務帳戶未獲得位於資料庫專案 (專案 B) 的 Cloud SQL 用戶端身分與存取權管理角色。
請務必啟用 Cloud SQL Admin API。
若未啟用,您會在 Cloud SQL 驗證 Proxy 記錄中看見像是
Error 403: Access Not Configured
的輸出。如果要將多個執行個體納入執行個體清單,請務必使用逗號做為分隔符號,不包含空格。如果您使用 TCP,請確定每個執行個體都指定了不同的通訊埠。
如果您使用 UNIX 通訊端連線,請確認通訊端是透過列出您啟動 Cloud SQL 驗證 Proxy 時提供的目錄建立。
如果您有傳出防火牆政策,請確定該政策允許連線至目標 Cloud SQL 執行個體的 3307 通訊埠。
您可以依序前往Google Cloud 控制台的「Operations」>「Logging」>「Logs Explorer」專區,查看記錄檔,確認 Cloud SQL 驗證 Proxy 是否已正確啟動。成功的作業如下所示:
2021/06/14 15:47:56 Listening on /cloudsql/$PROJECT_ID:$REGION:$INSTANCE_NAME/1433 for $PROJECT_ID:$REGION:$INSTANCE_NAME 2021/06/14 15:47:56 Ready for new connections
配額問題:當 Cloud SQL Admin API 配額超出時,Cloud SQL 驗證 Proxy 會啟動並顯示以下錯誤訊息:
There was a problem when parsing a instance configuration but ignoring due to the configuration. Error: googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'sqladmin.googleapis.com' for consumer 'project_number:$PROJECT_ID., rateLimitExceeded
應用程式連線至 Proxy 後,Proxy 會回報以下錯誤:
failed to refresh the ephemeral certificate for $INSTANCE_CONNECTION_NAME: googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'sqladmin.googleapis.com' for consumer 'project_number:$PROJECT_ID., rateLimitExceeded
解決方案:找出配額問題的來源 (例如應用程式誤用連接器,並不必要地建立新連線),或是與支援團隊聯絡,要求提高 Cloud SQL Admin API 配額。如果在啟動時出現配額錯誤,您必須重新部署應用程式,才能重新啟動 Proxy。如果配額錯誤是在啟動後出現,則不必重新部署。
後續步驟
- 進一步瞭解 Cloud SQL 驗證 Proxy。
- 進一步瞭解身分與存取權管理 (IAM)。
- 進一步瞭解服務帳戶。
- 瞭解 Cloud SQL 執行個體的兩個存取控管層級。
- 建立使用者和資料庫。
- 瞭解如何 從應用程式連線至執行個體。
- 瞭解支援的選項。