本頁說明如何使用安裝於 Compute Engine 執行個體上的 mysql 用戶端來連線至 Cloud SQL。
您可以使用私人 IP、公開 IP、Cloud SQL 驗證 Proxy 或 Cloud SQL 驗證 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 執行個體上安裝 MySQL 用戶端 (如果尚未安裝)。
- 從 MySQL Community Server 下載頁面,為您的平台下載 MySQL Community Server。
Community Server 包含 MySQL 用戶端。 - 按照下載頁面上的指示安裝 Community Server。
如要進一步瞭解如何安裝 MySQL,請參閱「安裝及升級 MySQL」。
4. 使用 MySQL 用戶端連線。
mysql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -u USERNAME -p
您可以在 Cloud SQL 執行個體頁面找到私人 IP 位址,也可以執行下列 gcloud 指令:
gcloud sql instances list
公開 IP
如要使用公開 IP 連線,請按照下列步驟操作:
如要直接在 Cloud Shell 編輯器中按照逐步指南操作,請按一下「Guide me」(逐步引導):
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 執行個體上安裝 MySQL 用戶端 (如果尚未安裝)。
- 從 MySQL Community Server 下載頁面,為您的平台下載 MySQL Community Server。
Community Server 包含 MySQL 用戶端。 - 按照下載頁面上的指示安裝 Community Server。
如要進一步瞭解如何安裝 MySQL,請參閱「安裝及升級 MySQL」。
5. 使用 MySQL 用戶端連線。
mysql -h CLOUD_SQL_PUBLIC_IP_ADDR -u USERNAME -p
您可以在 Cloud SQL 執行個體頁面找到公開 IP 位址,也可以執行下列 gcloud 指令:
gcloud sql instances list
如需透過 SSL 連線的範例,請參閱「透過 SSL 連線」。
6. 畫面上會顯示 mysql 提示。
7. 如需保持未使用的連線處於連線狀態:
設定 TCP 保持運作。
詳情請參閱 Compute Engine 說明文件中的「 在執行個體與網際網路之間通訊」。
系統會自動為執行個體保持連線。
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」(服務帳戶名稱) 欄位中,輸入服務帳戶的描述性名稱。
- 將「服務帳戶 ID」變更為可辨識的專屬值,然後點選「建立並繼續」。
-
按一下「選取角色」欄位,然後選取下列其中一個角色:
- Cloud SQL > Cloud SQL 用戶端
- Cloud SQL > Cloud SQL 編輯器
- Cloud SQL > Cloud SQL 管理員
- 按一下「Done」(完成),即完成建立服務帳戶。
- 按一下新服務帳戶的動作選單,然後選取「管理金鑰」。
- 點選「Add key」(新增金鑰) 下拉式選單,然後點選「Create new key」(建立新的金鑰)。
-
確認金鑰類型為 JSON,然後按一下「建立」。
私密金鑰檔案會下載到您的機器上。您可以將它移到其他位置。請妥善保管金鑰檔案。
如果 Compute Engine 執行個體與 Cloud SQL 執行個體位於不同專案,請確保 Compute Engine 執行個體的服務帳戶在包含 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] (新增) 來新增服務帳戶。
在「新增主體」對話方塊中,提供服務帳戶名稱,然後選取包含
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 執行個體上安裝 MySQL 用戶端 (如果尚未安裝)。
- 從 MySQL Community Server 下載頁面,為您的平台下載 MySQL Community Server。
Community Server 包含 MySQL 用戶端。 - 按照下載頁面上的指示安裝 Community Server。
如要進一步瞭解如何安裝 MySQL,請參閱「安裝及升級 MySQL」。
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.0/cloud-sql-proxy.linux.amd64
- 將 Cloud SQL 驗證 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.0/cloud-sql-proxy.linux.386
- 如果找不到
curl指令,請執行sudo apt install curl並重複下載指令。 - 將 Cloud SQL 驗證 Proxy 設為允許執行:
chmod +x cloud-sql-proxy
Windows 64 位元
在 https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/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.0/cloud-sql-proxy.x86.exe 上按一下滑鼠右鍵,然後選取「另存連結為」,即可下載 Cloud SQL Auth Proxy。將檔案重新命名為cloud-sql-proxy.exe。Cloud SQL Auth Proxy Docker 映像檔
Cloud SQL 驗證 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.0
其他 OS
如要使用未列出的作業系統,可以從來源編譯 Cloud SQL Auth Proxy。6. 啟動 Cloud SQL Auth Proxy。
視語言和環境而定,您可以使用 TCP Socket、Unix Socket 或 Cloud SQL Auth Proxy Docker 映像檔啟動 Cloud SQL Auth Proxy。Cloud SQL Auth Proxy 二進位檔會連線至指令列上指定的一或多個 Cloud SQL 執行個體,並以 TCP 或 Unix 通訊端開啟本機連線。其他應用程式和服務 (例如應用程式程式碼或資料庫管理用戶端工具) 可以透過這些 TCP 或 Unix Socket 連線,連線至 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 3306 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 驗證:
Unix 通訊端
Cloud SQL Auth Proxy 可以監聽 Unix 通訊端,這是 Posix 標準機制,可使用資料夾管理在同一主機上執行的兩個程序之間的通訊。使用 Unix Socket 的優點是安全性更高且延遲時間較短,但您無法從外部機器存取 Unix Socket。
如要建立及使用 Unix Socket,目標目錄必須存在,且 Cloud SQL Auth Proxy 和應用程式都必須具備讀取和寫入權限。
複製INSTANCE_CONNECTION_NAME。您可以在Google Cloud 控制台中,前往執行個體的「總覽」頁面查看,也可以執行下列指令:
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
例如:myproject:myregion:myinstance。
- 建立 Cloud SQL Auth Proxy Socket 所在的目錄:
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
- 如果您使用服務帳戶驗證 Cloud SQL Auth Proxy,請記下在建立服務帳戶時建立的私密金鑰檔案,在用戶端電腦上的位置。
- 開啟新的 Cloud Shell 終端機視窗,然後啟動 Cloud SQL 驗證 Proxy。
以下是幾種可能的 Cloud SQL Auth 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 Auth Proxy,即可監控輸出內容,不必擔心與其他程式的輸出內容混淆。
如要進一步瞭解 Cloud SQL Auth Proxy 選項,請參閱「驗證 Cloud SQL Auth Proxy 的選項」。
- 使用 Google Cloud SDK 驗證:
Docker
如要在 Docker 容器中執行 Cloud SQL Auth Proxy,請使用 Google Container Registry 提供的 Cloud SQL Auth Proxy Docker 映像檔。
您可以使用 TCP 通訊端或 Unix 通訊端啟動 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 或 Unix Socket 啟動 Cloud SQL Auth Proxy。以 Java 程式設計語言編寫的應用程式或 Windows 環境都不支援 Unix 通訊端。
使用 TCP Socket
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.26.0 \\ --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 Auth Proxy 暴露在主機外部。執行個體參數中必須要有「0.0.0.0」,才能讓 Docker 容器以外的環境存取連接埠。
使用 Unix Socket
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.26.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 Auth Proxy 參數。
7. 啟動 mysql 工作階段。
您使用的連線字串取決於啟動 Cloud SQL Auth Proxy 時,是使用 TCP Socket、UNIX Socket 還是 Docker。
TCP 通訊端
- 啟動 mysql 用戶端:
如要連線至 MySQL 8.4 執行個體,請使用下列指令:mysql -u USERNAME -p --host 127.0.0.1
mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key
使用 TCP Socket 連線時,系統會透過
127.0.0.1存取 Cloud SQL Auth Proxy。 - 如果系統提示,請輸入密碼。
- 畫面上會顯示 mysql 提示。
使用 Unix Socket
- 啟動 mysql 用戶端:
mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME --get-server-public-key
- 輸入密碼。
- 畫面上會顯示 mysql 提示。
需要協助嗎?如需 Proxy 疑難排解說明,請參閱「排解 Cloud SQL 驗證 Proxy 連線問題」,或前往 Cloud SQL 支援頁面。
後續步驟
- 如需 Cloud SQL Auth Proxy 的連線問題疑難排解說明,請參閱 這篇文章。
- 建立使用者和資料庫。
- 進一步瞭解私人 IP。
- 瞭解從應用程式連線至執行個體的選項。
- 瞭解 mysql 用戶端。
- 瞭解其他 MySQL 管理工具。
- 瞭解支援的選項。