本頁說明如何使用安裝在 Compute Engine 執行個體上的 sqlcmd 用戶端,連線至 Cloud SQL。
您可以使用私人 IP、公開 IP、Cloud SQL Auth Proxy 或 Cloud SQL Auth Proxy Docker 映像檔。
如需逐步說明,瞭解如何執行連結至 Cloud SQL 的 Compute Engine 範例網頁應用程式,請參閱從 Compute Engine 連線的快速入門導覽課程。
事前準備
這項工作不包含設定 Compute Engine 執行個體的操作說明。如需建立及設定 Compute Engine 執行個體的相關協助,請參閱 Compute Engine 說明文件。
私人 IP
如要使用私人 IP 從 Compute Engine 執行個體連線至 Cloud SQL,您必須為環境設定私人服務連線,並將 Cloud SQL 執行個體設為使用私人 IP。Compute Engine 執行個體必須與 Cloud SQL 執行個體位於相同區域,且位於設為私人連線的網路。瞭解詳情。
1. 將執行個體設為使用私人 IP
請按照「設定私人 IP 連線」一文中的操作說明操作。
2. 開啟 Cloud Shell 終端機連線,連往 Compute Engine 執行個體。
請根據執行個體的作業系統參考適當指示:
- 如果是 Linux,請參閱「 連線至 Linux VM」。
- 如為 Windows,請參閱「 連線至 Windows VM」。
如果 Compute Engine 執行個體執行的是 RHEL 或 CentOS 公開映像檔,SELinux 可能會封鎖 Proxy 連線。如果發生這種情況,您必須設定 SELinux 功能,允許連線。
如要進一步瞭解 RHEL 的 SELinux,請參閱 RHEL 說明文件。如要進一步瞭解 CentOS 的 SELinux,請參閱 CentOS 說明文件。
3. 如果 Compute Engine 執行個體尚未安裝 sqlcmd 用戶端,請先安裝。
Debian/Ubuntu
如果是 Debian/Ubuntu,請 安裝適用的 SQL Server 指令列工具。
CentOS/RHEL
如果是 CentOS/RHEL,請 安裝適用的 SQL Server 指令列工具。
openSUSE
如果是 openSUSE,請 安裝適用的 SQL Server 指令列工具。
其他平台
如要安裝 SQL Server,請參閱 到達網頁,以及 SQL Server 下載頁面。
4. 連線至 sqlcmd 用戶端。
sqlcmd -S CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME
您可以在 Cloud SQL 執行個體頁面找到私人 IP 位址,也可以執行下列 gcloud 指令:
gcloud sql instances list
公開 IP
如要使用公開 IP 連線:
1. 如果 Compute Engine 執行個體還沒有靜態 IPv4 IP 位址,請為其新增。
您無法使用 IPv6 連線至 Compute Engine。如要瞭解如何新增靜態 IP 位址,請參閱 Compute Engine 說明文件中的「 預留新的靜態外部 IP 位址」。
2. 授權 Compute Engine 執行個體的靜態 IP 位址,做為可連線至 Cloud SQL 執行個體的網路。
詳情請參閱「設定公開 IP 連線的存取權」。
3. 開啟 Cloud Shell 終端機,連線至 Compute Engine 執行個體。
請根據執行個體的作業系統參考適當指示:
- 如果是 Linux,請參閱「 連線至 Linux VM」。
- 如果是 Windows,請參閱「 連線至 Windows VM」。
如果 Compute Engine 執行個體執行的是 RHEL 或 CentOS 公開映像檔,SELinux 可能會封鎖 Proxy 連線。如果發生這種情況,您必須設定 SELinux 功能,允許連線。
如要進一步瞭解 RHEL 的 SELinux,請參閱 RHEL 說明文件。如要進一步瞭解 CentOS 的 SELinux,請參閱 CentOS 說明文件。
4. 如果 Compute Engine 執行個體尚未安裝 sqlcmd 用戶端,請先安裝。
Debian/Ubuntu
如果是 Debian/Ubuntu,請 安裝適用的 SQL Server 指令列工具。
CentOS/RHEL
如果是 CentOS/RHEL,請 安裝適用的 SQL Server 指令列工具。
openSUSE
如果是 openSUSE,請 安裝適用的 SQL Server 指令列工具。
其他平台
如要安裝 SQL Server,請參閱 到達網頁,以及 SQL Server 下載頁面。
5. 使用 sqlcmd 用戶端連線。
sqlcmd -S CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME
您可以在 Cloud SQL 執行個體頁面找到公開 IP 位址,也可以執行下列 gcloud 指令:
gcloud sql instances list
如需透過 SSL 連線的範例,請參閱「透過 SSL 連線」。
6. 畫面上會顯示 sqlcmd 提示。
Cloud SQL Auth Proxy
如要從 Compute Engine 使用 Cloud SQL Auth Proxy 連線:1. 啟用 Cloud SQL Admin API。
啟用 API 所需的角色
如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過服務使用情形管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
2. 建立服務帳戶。
- 前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
- 選取含有 Cloud SQL 執行個體的專案。
- 按一下「建立服務帳戶」。
- 在「Service account name」(服務帳戶名稱) 欄位中,輸入服務帳戶的描述性名稱。
- 將「Service account ID」(服務帳戶 ID) 變更為不重複且可辨識的值,然後按一下「Create and continue」(建立並繼續)。
-
按一下「Select a role」(選取角色) 欄位,然後選取下列其中一個角色:
- Cloud SQL > Cloud SQL Client
- Cloud SQL > Cloud SQL 編輯者
- Cloud SQL > Cloud SQL Admin
- 按一下「Done」(完成),即完成建立服務帳戶。
- 按一下新服務帳戶的動作選單,然後選取「管理金鑰」。
- 依序點選「Add key」(新增金鑰) 下拉式選單和「Create new key」(建立新的金鑰)。
-
確認金鑰類型為 JSON,然後按一下「建立」。
私密金鑰檔案會下載到您的機器。您可以將它移到其他位置。妥善保管金鑰檔案。
如果 Compute Engine 執行個體與 Cloud SQL 執行個體位於不同專案,請確認其服務帳戶在 Cloud SQL 執行個體所在專案中具備適當權限:
- 前往 Google Cloud 控制台的 Compute Engine 執行個體清單。
- 視需要選取與 Compute Engine 執行個體相關聯的專案。
- 選取 Compute Engine 執行個體,即可顯示其屬性。
- 在 Compute Engine 執行個體屬性中,複製服務帳戶的名稱。
- 前往 Google Cloud 控制台的「IAM & Admin Projects」(IAM 與管理專案) 頁面。
- 選取含有 Cloud SQL 執行個體的專案。
- 搜尋服務帳戶名稱。
-
如果服務帳戶已存在,且具備包含
cloudsql.instances.connect權限的角色,則可繼續執行步驟 4。與舊版的
Editor和Owner專案角色一樣,Cloud SQL Client、Cloud SQL Editor和Cloud SQL Admin角色都會提供必要的權限。 - 如果您沒有服務帳戶,則請按一下 [Add] (新增) 來新增服務帳戶。
在「Add principals」(新增主體) 對話方塊中,提供服務帳戶名稱,並選取包含
cloudsql.instances.connect權限的角色 (除了「檢視者」以外,任何 Cloud SQL 預先定義的角色皆可)。或者,您也可以選取「專案」>「編輯者」,使用基本的「編輯者」角色,但「編輯者」角色包含 Google Cloud的權限。
如果沒有看到這些角色,可能是因為 Google Cloud 使用者
resourcemanager.projects.setIamPolicy沒有權限。如要查看權限,請前往 Google Cloud 控制台的「IAM」頁面,然後搜尋您的使用者 ID。- 按一下 [新增]。
現在,您會看到服務帳戶已列出,並具備指定角色。
3. 開啟與 Compute Engine 執行個體的終端機連線。
請根據執行個體的作業系統參考適當指示:
- 如果是 Linux,請參閱「 連線至 Linux 執行個體」。
- 針對 Windows,請參閱連線至 Windows 執行個體一文。
如果 Compute Engine 執行個體執行的是 RHEL 或 CentOS 公用映像檔,SELinux 可能會封鎖 Proxy 連線。如果發生這種情況,您必須設定 SELinux 功能,允許連線。
如要進一步瞭解 RHEL 的 SELinux,請參閱 RHEL 說明文件。如要進一步瞭解 CentOS 的 SELinux,請參閱 CentOS 說明文件。
4. 如果 Compute Engine 執行個體尚未安裝 sqlcmd 用戶端,請先安裝。
Debian/Ubuntu
如果是 Debian/Ubuntu,請 安裝適用的 SQL Server 指令列工具。
CentOS/RHEL
如果是 CentOS/RHEL,請 安裝適用的 SQL Server 指令列工具。
openSUSE
如果是 openSUSE,請 安裝適用的 SQL Server 指令列工具。
其他平台
如要安裝 SQL Server,請參閱 到達網頁,以及 SQL Server 下載頁面。
5. 在 Compute Engine 執行個體上安裝 Cloud SQL Auth Proxy。
開始前,請先確認機器的架構。
如果是在 Linux 或 Mac 上執行,可以執行下列指令來找出這個值:
uname -a
Linux 64 位元
- 下載 Cloud SQL Auth Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.linux.amd64
- 將 Cloud SQL Auth Proxy 設為允許執行:
chmod +x cloud-sql-proxy
Linux 32 位元
- 下載 Cloud SQL Auth Proxy:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.2/cloud-sql-proxy.linux.386
- 如果找不到
curl指令,請執行sudo apt install curl,然後重複下載指令。 - 將 Cloud SQL Auth Proxy 設為允許執行:
chmod +x cloud-sql-proxy
Windows 64 位元
在 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.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.26.2/cloud-sql-proxy.x86.exe 上按一下滑鼠右鍵,然後選取「另存連結為」,下載 Cloud SQL Auth Proxy。將檔案重新命名為cloud-sql-proxy.exe。Cloud SQL Auth Proxy Docker 映像檔
Cloud SQL Auth Proxy 有不同的容器映像檔,例如 distroless、alpine 和 buster。預設的 Cloud SQL Auth Proxy 容器映像檔使用 distroless,其中不含任何殼層。如需殼層或相關工具,請下載以 alpine 或 buster 為基礎的映像檔。詳情請參閱「Cloud SQL Auth Proxy 容器映像檔」。
您可以使用 Docker 執行下列指令,將最新映像檔提取至本機電腦:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.2
其他 OS
如要使用未列出的作業系統,可以從來源編譯 Cloud SQL Auth Proxy。6. 啟動 Cloud SQL Auth Proxy。
您可以使用 TCP 通訊端或 Cloud SQL Auth Proxy Docker 映像檔,啟動 Cloud SQL Auth Proxy。Cloud SQL Auth Proxy 二進位檔會連線至指令列上指定的一或多個 Cloud SQL 執行個體,並以 TCP 通訊端的形式開啟本機連線。其他應用程式和服務 (例如應用程式程式碼或資料庫管理用戶端工具),可以透過該 TCP 通訊端連線,連線至 Cloud SQL 執行個體。
TCP 通訊端
如果是 TCP 連線,Cloud SQL Auth Proxy 預設會監聽 localhost(127.0.0.1)。因此,當您為執行個體指定 --port PORT_NUMBER 時,本機連線會位於 127.0.0.1:PORT_NUMBER。
或者,您也可以為本機連線指定其他位址。
舉例來說,如要讓 Cloud SQL Auth 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 Auth Proxy,請記下建立服務帳戶時,在用戶端機器上建立的私密金鑰檔案位置。
- 啟動 Cloud SQL Auth Proxy。
以下是部分可能的 Cloud SQL Auth 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 Auth Proxy 選項,請參閱「驗證 Cloud SQL Auth Proxy 的選項」。
- 使用 Cloud SDK 驗證:
Docker
如要在 Docker 容器中執行 Cloud SQL Auth Proxy,請使用 Google Container Registry 提供的 Cloud SQL Auth Proxy Docker 映像檔。
您可以使用 TCP 通訊端啟動 Cloud SQL Auth Proxy,指令如下所示。這個選項會使用 INSTANCE_CONNECTION_NAME 做為連線字串,以識別 Cloud SQL 執行個體。您可以在Google Cloud 控制台中,前往執行個體的「Overview」(總覽) 頁面找到 INSTANCE_CONNECTION_NAME,或執行下列指令:
gcloud sql instances describe INSTANCE_NAME
例如:myproject:myregion:myinstance。
使用 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.26.2 \ --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 Auth Proxy 暴露在本機主機外部。必須使用 --address 0.0.0.0 旗標,才能從 Docker 容器外部存取通訊埠。
7. 啟動 sqlcmd 工作階段。
您使用的連線字串取決於您是使用 TCP 通訊端還是 Docker 啟動 Cloud SQL Auth Proxy。
TCP 通訊端
- 啟動 sqlcmd 用戶端:
sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
使用 TCP 通訊端連線時,系統會透過
127.0.0.1存取 Cloud SQL Auth Proxy。 - 如果系統提示,請輸入密碼。
- 畫面上會顯示 sqlcmd 提示。
需要協助嗎?如需 Proxy 疑難排解說明,請參閱「排解 Cloud SQL Auth Proxy 連線問題」,或前往 Cloud SQL 支援頁面。