使用 psql 用戶端連線

您可以使用 PostgreSQL 指令列用戶端連線至 Cloud SQL。本頁說明如何將 psql 用戶端連線至 Cloud SQL 執行個體,不論該用戶端是在本機用戶端機器、Compute Engine VM 或 Cloud Shell 中執行。

事前準備

如要使用 psql 用戶端連線至 Cloud SQL 執行個體,請先完成下列步驟:

在本機或 Compute Engine VM 上使用 PostgreSQL 用戶端

使用 psql 用戶端連線至 Cloud SQL 執行個體時,需要完成下列三項高階工作:

  1. 安裝用戶端
  2. 設定 Cloud SQL 執行個體的存取權
  3. 連線至 Cloud SQL 執行個體

安裝用戶端

如要安裝 psql 用戶端,請執行下列操作:

Debian/Ubuntu

從套件管理員安裝 psql 用戶端:

sudo apt-get update
sudo apt-get install postgresql-client

CentOS/RHEL

從套件管理員安裝 psql 用戶端:

sudo yum install postgresql

openSUSE

從套件管理員安裝 psql 用戶端:

sudo zypper install postgresql

其他平台

  1. PostgreSQL 下載頁面下載您平台適用的 PostgreSQL Core Distribution。
    Core Distribution 內含 psql 用戶端。
  2. 按照下載頁面上的指示安裝 PostgreSQL 資料庫。

設定 Cloud SQL 執行個體的存取權

如要設定執行個體的存取權,請按照下列步驟操作:

  1. 在用戶端機器或 Compute Engine VM 執行個體上,使用「What's my IP」(我的 IP 為何) 頁面查看用戶端機器的 IP 位址。
  2. 複製該 IP 位址。
  3. 前往 Cloud de Confiance 控制台的「Cloud SQL Instances」頁面。

    前往 Cloud SQL 執行個體

  4. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  5. 在 SQL 導覽選單中,選取「連線」
  6. 選取「網路」分頁標籤。
  7. 在「Authorized networks」(已授權的網路) 區段中,按一下「Add network」(新增網路),然後輸入安裝用戶端的機器的 IP 位址。
  8. 按一下 [完成]。然後按一下頁面底部的「儲存」來儲存變更。
  9. 使用 SSL/TLS不使用加密 (不使用 SSL/TLS) 連線至執行個體。

連線至 Cloud SQL 執行個體 (不加密)

如要允許您在不加密的情況下連線,執行個體的 SSL 模式必須設為 ALLOW_UNENCRYPTED_AND_ENCRYPTED。在 Cloud de Confiance 控制台中,對應的設定是「允許未加密的網路流量」

如要進一步瞭解執行個體的 SSL/TLS 設定,請參閱設定 SSL/TLS 憑證

如要連線至執行個體,請按照下列步驟操作:

  1. 確認您已安裝用戶端,並設定執行個體的存取權
  2. 啟動 psql 用戶端:
    psql "sslmode=disable dbname=postgres user=postgres hostaddr=INSTANCE_IP_ADDRESS"
  3. 輸入密碼。
  4. 系統會顯示 psql 提示。

使用 SSL/TLS 連線至 Cloud SQL 執行個體

如要使用 SSL/TLS 和內建驗證機制連線至執行個體,請按照下列步驟操作:

  1. 啟動 psql 用戶端:
    psql "sslmode=require \
          hostaddr=INSTANCE_IP_ADDRESS \
          user=postgres dbname=DB_NAME"
       

    例如:

    psql "sslmode=require \
          hostaddr=203.12.34.56 \
          user=postgres dbname=postgres"
       

    您也可以建立連線服務檔案來管理連線參數,特別是連線至多個執行個體時。詳情請參閱 PostgreSQL 說明文件

  2. 輸入密碼。即使 PostgreSQL 支援使用 SSL/TLS 時的無密碼連線,Cloud SQL 仍強制要求密碼。
  3. 如要確認連線已加密,請查看連線資訊中的密碼:
    SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
    

使用 SSL/TLS 和用戶端憑證驗證功能連線至 Cloud SQL 執行個體

如果 Cloud SQL 執行個體上的 ssl_mode 已設為 TRUSTED_CLIENT_CERTIFICATE_REQUIRED,登入時也必須提供已驗證的用戶端身分。

如要使用 SSL/TLS 憑證連線並驗證用戶端,您需要下列項目:

  • client-cert.pem 檔案中的用戶端公用金鑰憑證。
  • client-key.pem 檔案中的用戶端私密金鑰。

此外,如要讓用戶端驗證伺服器身分以進行相互驗證,請指定伺服器憑證 server-ca.pem

舉例來說,如要啟動 psql 用戶端:
   psql "sslmode=verify-ca sslrootcert=server-ca.pem \
      sslcert=client-cert.pem sslkey=client-key.pem \
      hostaddr=INSTANCE_IP_ADDRESS \
      user=postgres dbname=DB_NAME"
   

如果您沒有用戶端憑證和相應的私密金鑰,請 建立新的用戶端憑證

在 Cloud Shell 中使用用戶端

如要連線至 Cloud SQL 執行個體 (僅限公開 IP):

  1. 前往 Cloud de Confiance 控制台。

    前往 Cloud de Confiance 控制台

  2. 按一下工具列右側的 Cloud Shell 圖示

    Cloud Shell 需要一些時間才能完成初始化。

  3. 看到 Cloud Shell 提示時,請使用內建的用戶端連線至 Cloud SQL 執行個體:
    gcloud sql connect INSTANCE_ID \
    --user=postgres
  4. 請輸入您的密碼。

gcloud sql connect 指令不支援使用私人 IP 或 SSL/TLS 連線至 Cloud SQL 執行個體。如要透過加密連線,請在 Cloud Shell 中安裝並使用 Proxy:

  1. /home/USER 目錄中安裝 Proxy (Linux 64 位元)。
  2. 使用 gcloud CLI 驗證啟動 Proxy:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME &

  3. 使用 TCP 連線連線至資料庫:

    psql -U USERNAME --host=127.0.0.1

後續步驟