使用 Google 的 cloud-sql-proxy (Cloud SQL Auth Proxy) 登入資料庫的步驟

3 min

language: ja bn en es hi pt ru zh-cn zh-tw

大家好,我是個不才。
我在使用cloud-sql-proxy嘗試連接資料庫時遇到了一些困難,所以在此記錄下來。

必要的二進位檔安裝

儲存 cloud-sql-proxy 執行檔並設定路徑

首先,您需要cloud-sql-proxy的執行檔。
由於它不存在於brew等套件中,您需要從Google 網站下載針對不同指令集建置的執行檔

curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.14.2/cloud-sql-proxy.darwin.arm64
chmod +x cloud-sql-proxy
sudo mv cloud-sql-proxy /usr/local/bin
which cloud-sql-proxy

雖然不常有人這麼做,但是透過homebrew安裝的執行檔會放在/opt/homebrew/bin/下,這次是使用者安裝的獨特二進位檔,因此對於作為FreeBSD分支的MacOS來說,/usr/local/bin似乎更為合適,所以我將其放在那裡。

安裝 MySQL 二進位檔

看來,如果沒有指定版本就執行brew install mysql,可能會因為缺少二進位檔或版本過低而在連接時發生錯誤,因此請依照以下方式安裝。
關於這一點,多虧了前輩的幫助,我很快就解決了。

brew install mysql-client@8.4

然後
如果路徑沒有設定,請依照以下方式尋找並建立符號連結。

find /opt/homebrew -name "mysql*"
ln -s /找到的/mysql二進位檔的路徑 /opt/homebrew/bin/mysql

取得資料庫連接資訊

環境確認與認證

假設您已完成登入程序。

gcloud auth login
gcloud auth application-default login

請依照以下方式指定專案

gcloud config set project 專案ID

請依照以下方式確認專案

gcloud config get-value project

然後請依照以下方式確認資料庫的連接名稱

gcloud sql instances describe 資料庫實例名稱 | grep "^connectionName:" | awk '{print $2}'

透過 cloud-sql-proxy 連接

這是關於其運作機制:這個cloud-sql-proxy會代理資料庫。
想像一下,如果您嘗試直接存取虛擬機器內的資料庫,您需要先透過 SSH 連接到該作業系統,然後登入資料庫伺服器本身。然而,透過這個代理,它會讓Cloud SQL中的資料庫伺服器在本地主機上進行Listen
如果資料庫連接埠是開放的,您或許可以直接連接到該資料庫伺服器,但我認為沒有人會將資料庫伺服器設定在如此不安全的狀態。
因此,如果希望盡可能安全且方便地連接,那麼代理資料庫似乎就是解決方案了。

那麼,讓我們指定剛才確認的資料庫連接名稱。

cloud-sql-proxy --port 3306 資料庫連接名稱

以上是針對 MySQL 的情況,因此如果是PostgreSQL等資料庫,您需要指定不同的連接埠,所需的二進位檔也會有所不同,所以這部分可能需要適當調整。

一旦連接建立,就表示已成功代理,因此只需保持現狀,然後從另一個終端機連接到 MySQL 即可。

mysql --user="資料庫使用者" --password="資料庫使用者的密碼" -h 127.0.0.1

那麼,下次再見。
請多指教。

Related Posts