本頁說明如何使用 Cloud SQL 驗證 Proxy Docker 映像檔,從執行 Linux 的用戶端機器或 Compute Engine Linux 執行個體,將 sqlcmd 用戶端連線至 Cloud SQL 執行個體。
事前準備
您必須做好以下準備:
- 已安裝 gcloud CLI。 瞭解詳情。
- 授權 gcloud CLI。 瞭解詳情。
- 設定 gcloud CLI 的預設專案。 瞭解詳情。
- 在 Cloud SQL 執行個體上設定資料庫使用者。 瞭解詳情。
使用 Cloud SQL Auth Proxy Docker 映像檔連線 sqlcmd 用戶端
如要使用 Cloud SQL Auth Proxy Docker 映像檔連線,請按照下列步驟操作:
如果尚未啟用,請啟用 Cloud SQL Admin API。
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。- 如果您使用 Compute Engine 執行個體,請準備執行個體:
-
顯示 Compute Engine 執行個體屬性:
gcloud compute instances describe [GCE_INSTANCE_NAME]
- 確認執行個體已啟用的範圍。
驗證使用範圍需要下列兩個範圍:
https://www.googleapis.com/auth/sqlservice.adminhttps://www.googleapis.com/auth/devstorage.read_write
或者,
https://www.googleapis.com/auth/cloud-platform範圍會啟用所有 Google Cloud Platform API。如果您的 Compute Engine 執行個體沒有正確的範圍,您可以更新執行個體使其包含這些範圍。詳情請參閱 Compute Engine 說明文件。
- 按照「 連線至 Linux 執行個體」一文中的操作說明,開啟執行個體的終端機連線。
-
顯示 Compute Engine 執行個體屬性:
-
如果 Compute Engine 執行個體或用戶端電腦尚未安裝 sqlcmd 用戶端,請先安裝。
Debian/Ubuntu
如果是 Debian/Ubuntu,請 安裝適用的 SQL Server 指令列工具。
CentOS/RHEL
如果是 CentOS/RHEL,請 安裝適用的 SQL Server 指令列工具。
openSUSE
如果是 openSUSE,請 安裝適用的 SQL Server 指令列工具。
其他平台
如要安裝 SQL Server,請參閱 到達網頁,以及 SQL Server 下載頁面。
-
如有需要,請安裝 Docker 用戶端
curl https://get.docker.com | sh sudo usermod -aG docker $USER
如果您正在使用將容器最佳化的 Compute Engine 執行個體,即表示已經安裝 Docker 用戶端。
-
從 Google Container Registry 安裝 Cloud SQL Auth Proxy Docker 映像檔。
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.25.4
- 如果您在本機 (而非 Compute Engine 執行個體) 上執行 Cloud SQL Auth Proxy Docker 映像檔,或 Compute Engine 執行個體沒有適當的範圍,請建立 Google Cloud Platform 服務帳戶。
- 前往 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,然後按一下「建立」。
私密金鑰檔案會下載到您的機器上。您可以將它移到其他位置。請妥善保管金鑰檔案。
啟動 Cloud SQL Auth Proxy 時,您會以「PATH_TO_KEY_FILE」的形式提供金鑰檔案的路徑。
- 前往 Google Cloud 控制台的 Cloud SQL 執行個體頁面。
-
選取執行個體,開啟「執行個體詳細資料」頁面,然後複製「執行個體連線名稱」。
例如:
myproject:us-central1:myinstance。 -
啟動 Cloud SQL Auth Proxy。
您可以根據語言和環境,使用 TCP 或 Unix Socket 啟動 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:1433:1433 \ gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.25.4 \ --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 Auth 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.25.4 // --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 中繼資料,動態判斷要連線的執行個體。進一步瞭解 Proxy 參數。
- 啟動用戶端:
您使用的連線字串取決於啟動 Cloud SQL Auth Proxy 時是否使用 TCP Socket 或 Docker。
TCP 通訊端
- 啟動 sqlcmd 用戶端:
sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
使用 TCP Socket 連線時,系統會透過
127.0.0.1存取 Cloud SQL Auth Proxy。 - 如果系統提示,請輸入密碼。
- 畫面上會顯示 sqlcmd 提示。
- 啟動 sqlcmd 用戶端:
將 Cloud SQL Auth Proxy Docker 映像檔保持在最新狀態
Cloud SQL 驗證 Proxy Docker 映像檔是以特定版本的 Cloud SQL 驗證 Proxy 為基礎。Cloud SQL Auth Proxy 推出新版本時,請提取新版 Cloud SQL Auth Proxy Docker 映像檔,確保環境維持在最新狀態。如要查看 Cloud SQL 驗證 Proxy 的目前版本,請前往 Cloud SQL 驗證 Proxy GitHub 發布頁面。
後續步驟
- 進一步瞭解 Cloud SQL Auth Proxy。
- 如需 Cloud SQL Auth Proxy 的連線問題疑難排解說明,請參閱 這篇文章。
- 建立使用者和資料庫。
- 瞭解從應用程式連線至執行個體的選項。
- 瞭解 Docker。
- 瞭解 Google Container Registry。
- 瞭解支援的選項。