全部產品
Search
文件中心

PolarDB:串連資料庫

更新時間:Apr 29, 2025

本文將為您介紹如何串連PolarDB PostgreSQL版(相容Oracle)叢集。

準備工作

在串連資料庫叢集前,您需要進行以下操作:

  • 擷取資料庫連接地址與連接埠

    您可以前往PolarDB控制台,在叢集列表中單擊目的地組群ID進入叢集詳情頁。在資料庫連接地區中擷取資料庫連接地址image

    說明
    • 推薦使用叢集地址,預設連接埠號碼為1521。

    • 請根據您的訪問環境選擇私網公網

      • 如果您是使用ECS訪問PolarDB,並且ECS與PolarDB位於同一VPC內,請選擇私網

      • 如果您是在本地環境中訪問PolarDB,請選擇公網。公網地址單擊右側申請即可。

    • 公網即互連網,通過公網訪問將無法實現PolarDB叢集的最佳效能。

    • 暫不支援使用虛擬機器主機和Simple Application Server使用私網地址串連PolarDB叢集。

  • 建立資料庫帳號

    您可以前往PolarDB控制台,在叢集列表中單擊目的地組群ID進入叢集詳情頁。在配置與管理 > 帳號管理建立資料庫帳號image

    說明

    資料庫帳號類型分為高許可權帳號普通帳號,這兩種帳號的許可權存在差異。您可以根據實際業務需求建立相關的資料庫帳號。

  • 設定叢集白名單

    您可以前往PolarDB控制台,在叢集列表中單擊目的地組群ID進入叢集詳情頁。在配置與管理 > 叢集白名單中添加IP白名單安全性群組image

    說明
    • 如果您是使用ECS訪問PolarDB,並且ECS與PolarDB位於同一VPC內,您可以選擇將ECS的內網IP地址添加至新的IP白名單分組,或將ECS所在的安全性群組添加至叢集白名單中。

    • 如果您是使用ECS訪問PolarDB,但ECS與PolarDB不在同一VPC內,您可以選擇將ECS的公網IP地址添加至新的IP白名單分組,或將ECS所在的安全性群組添加至叢集白名單中。

    • 如果您是在本地環境中訪問PolarDB,請將您本地環境的公網IP地址添加至新的IP白名單分組中。

      本地環境的公網IP地址擷取方法如下:Linux作業系統:開啟終端,輸入curl ifconfig.me命令後斷行符號。

      • Windows作業系統:開啟命令提示字元,輸入curl ip.me命令後斷行符號。

      • macOS作業系統:開啟終端,輸入curl ifconfig.me命令後斷行符號。

      若您的本網環境存在代理等情況,以上方式擷取的IP可能並非您的真實公網IP。您可以將IP段0.0.0.0/0添加至PolarDB叢集白名單中,成功串連叢集後,執行SELECT pid,usename,datname,client_addr,state,query FROM pg_stat_activity WHERE state = 'active';命令擷取真實公網IP地址,並將其加入到叢集白名單中。隨後刪除白名單中的IP段0.0.0.0/0

      image

    • IP段0.0.0.0/0表示允許所有的訪問源訪問叢集,將其設定在叢集白名單中存在極大的風險,如非必要,切勿將其添加至白名單。

完成準備工作後,您就可以串連資料庫叢集了。

串連資料庫叢集

串連資料庫叢集的方法有很多種,您可以根據實際業務需求來選擇適合的串連方式。以下列舉了部分串連資料庫叢集的樣本:

使用DMS串連叢集

DMS是阿里雲提供的圖形化的資料管理工具,它是一種集資料管理、結構管理、使用者授權、安全審計、資料趨勢、資料追蹤、BI圖表、效能與最佳化和伺服器管理於一體的資料管理服務。您無需藉助其他工具,即可直接在DMS上管理您的PolarDB叢集。

  1. 前往PolarDB控制台,在叢集列表中單擊目的地組群ID進入叢集詳情頁。在頁面右上方單擊登入資料庫image

  2. 在彈出的對話方塊中,輸入集群中建立的資料庫帳號資料庫密碼,單擊登入image

  3. 登入後,您可以在左側導覽列的資料庫執行個體 > 已登入執行個體列表中查看到所登入的PolarDB叢集,並進行相應的管理操作。image

使用用戶端串連叢集

您可以使用任何通用的用戶端串連PolarDB叢集。此處pgAdmin 4 v9.0版本為例,其它用戶端的操作類似。

  1. 下載並安裝pgAdmin 4用戶端。

  2. 開啟pgAdmin 4用戶端,按右鍵Servers,選擇Register > Server...image

  3. General頁設定串連名稱,Connection頁設定要串連的叢集資訊,並單擊Saveimage

    image

    參數

    說明

    Host name/address

    PolarDB叢集的資料庫連接地址與連接埠

    • 如果您是使用ECS訪問PolarDB,並且ECS與PolarDB位於同一VPC內,請選擇私網地址與連接埠。

    • 如果您是在本地環境中訪問PolarDB,請選擇公網地址與連接埠。

    • 預設連接埠號碼為1521

    Port

    Username

    PolarDB叢集的資料庫帳號和密碼

    Password

  4. 查看串連結果。若串連資訊無誤,會出現如下介面,則表示串連成功。image

    說明

    postgres是預設的系統資料庫,請勿在該資料庫中進行任何操作。

使用命令列串連叢集

您可以前往PostgreSQL官網網站下載並使用psql工具串連PolarDB資料庫叢集。您也可以使用PolarDB提供的PolarDB-Tools工具包中的psql工具串連PolarDB資料庫叢集

說明

文法

psql -h <host> -p <port> -U <username> -d <dbname>

參數

描述

host

PolarDB叢集的資料庫連接地址與連接埠

  • 如果您是使用ECS訪問PolarDB,並且ECS與PolarDB位於同一VPC內,請選擇私網地址與連接埠。

  • 如果您是在本地環境中訪問PolarDB,請選擇公網地址與連接埠。

  • 預設連接埠號碼為1521

port

username

PolarDB叢集的資料庫帳號

dbname

需要管理維護的資料庫

樣本

psql -h pc-xxx.rwlb.rds.aliyuncs.com -p 1521 -U testusername -d postgres

使用應用程式串連叢集

串連PolarDB PostgreSQL版(相容Oracle)叢集的方式與串連其他PostgreSQL資料庫的方式一樣,僅需將資料庫連接地址、連接埠、帳號及密碼等進行替換即可。以下為您列舉部分開發語言如何通過應用程式訪問PolarDB資料庫:

Java

此處以Maven專案為例,使用PostgreSQL JDBC驅動串連PolarDB PostgreSQL版(相容Oracle)叢集。

  1. 首先,您需要在pom.xml檔案中添加PostgreSQL JDBC驅動的依賴,程式碼範例:

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.2.18</version>
    </dependency>
  2. 串連叢集。請將參數<HOST><PORT><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME><YOUR_TABLE_COLUMN_NAME>進行替換。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class PolarDBConnection {
        public static void main(String[] args) {
            // 資料庫URL, 使用者名稱, 密碼
            String url = "jdbc:postgresql://<HOST>:<PORT>/<DATABASE>";
            String user = "<USER>";
            String password = "<PASSWORD>";
    
            try {
                // 載入JDBC驅動
                Class.forName("org.postgresql.Driver");
                
                // 建立串連
                Connection conn = DriverManager.getConnection(url, user, password);
                
                // 建立Statement對象
                Statement stmt = conn.createStatement();
                
                // 執行SQL查詢
                ResultSet rs = stmt.executeQuery("SELECT * FROM <YOUR_TABLE_NAME>");
                
                // 處理結果集
                while (rs.next()) {
                    System.out.println(rs.getString("<YOUR_TABLE_COLUMN_NAME>"));
                }
                
                // 關閉資源
                rs.close();
                stmt.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

Python

此處以Python3為例,使用psycopg2庫串連PolarDB PostgreSQL版(相容Oracle)叢集。

  1. 首先,您需要安裝psycopg2庫。如果您還沒有安裝,可以通過以下命令進行安裝:

    pip3 install psycopg2-binary
  2. 串連叢集。請將參數<HOST><PORT><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME>進行替換。

    import psycopg2
    
    try:
        # 串連參數
        conn = psycopg2.connect(
            host="<HOST>",  # 資料庫主機地址
            database="<DATABASE>",  # 資料庫名稱
            user="<USER>",  # 使用者名稱
            password="<PASSWORD>",  # 密碼
            port="<PORT>"  # 連接埠
        )
    
        # 建立遊標對象
        cursor = conn.cursor()
    
        # 執行查詢
        cursor.execute("SELECT * FROM <YOUR_TABLE_NAME>")
    
        # 擷取所有結果
        records = cursor.fetchall()
        for record in records:
            print(record)
            
    except Exception as e:
        print("錯誤:", e)
    finally:
        # 關閉串連
        if 'cursor' in locals():
            cursor.close()
        if 'conn' in locals():
            conn.close()

Go

此處以go1.23.0為例,使用database/sql包和lib/pq驅動來串連PolarDB PostgreSQL版(相容Oracle)叢集。

  1. 首先,您需要安裝lib/pq驅動。您可以通過以下命令進行安裝:

    go get -u github.com/lib/pq
  2. 串連叢集。請將參數<HOST><PORT><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME>進行替換。

    package main
    
    import (
        "database/sql"
        "fmt"
        "log"
    
        _ "github.com/lib/pq" // 初始化驅動
    )
    
    func main() {
        // 連接字串格式
        connStr := "user=<USER> password=<PASSWORD> dbname=<DATABASE> host=<HOST> port=<PORT> sslmode=disable"
    
        // 開啟資料庫連接
        db, err := sql.Open("postgres", connStr)
        if err != nil {
            log.Fatal(err)
        }
        defer db.Close() // 程式退出前關閉串連
    
        // 測試連接是否成功
        err = db.Ping()
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println("Connected to PostgreSQL!")
    
        // 執行查詢樣本
        rows, err := db.Query("SELECT * FROM <YOUR_TABLE_NAME>")
        if err != nil {
            log.Fatal(err)
        }
        defer rows.Close()
    }
    

常見問題

ECS無法串連PolarDB叢集

請您按以下步驟進行排查:

  1. 檢查PolarDB叢集的運行狀態是否為運行中

  2. 檢查資料庫連接地址、連接埠、帳號及密碼是否正確。更多資訊,請參見擷取資料庫連接地址與連接埠

  3. 檢查網路因素,您可以在ECS內執行ping 資料庫連接地址telnet 資料庫連接地址 連接埠來測試網路連通性。

    1. 若您使用的是私網地址:

      1. 檢查ECS與PolarDB叢集是否位於同一VPC下。若不在同一VPC下,則無法使用私網地址。您可以使用以下任意一種解決方案使ECS與PolarDB叢集位於同一VPC下:

      2. 檢查ECS的私網IP地址、IP段或安全性群組是否已添加至叢集白名單

    2. 若您使用的是公網地址,檢查ECS的公網IP地址或安全性群組是否已添加至叢集白名單

說明

暫不支援使用虛擬機器主機和Simple Application Server使用私網地址串連PolarDB叢集。

本地環境無法串連PolarDB叢集

請您按以下步驟進行排查:

  1. 檢查PolarDB叢集的運行狀態是否為運行中

  2. 檢查資料庫連接地址、連接埠、帳號及密碼是否正確。更多資訊,請參見擷取資料庫連接地址與連接埠

    說明

    資料庫連接地址需為公網地址。若您使用的是ECS並與PolarDB叢集位於同一VPC下,可以使用私網地址。

  3. 檢查網路因素,您可以在本地環境執行ping <資料庫連接地址>telnet <資料庫連接地址> <連接埠>來測試網路連通性。

  4. 檢查本地環境的公網IP地址或IP段是否已添加至叢集白名單

    本地環境的公網IP地址擷取方法如下:Linux作業系統:開啟終端,輸入curl ifconfig.me命令後斷行符號。

    • Windows作業系統:開啟命令提示字元,輸入curl ip.me命令後斷行符號。

    • macOS作業系統:開啟終端,輸入curl ifconfig.me命令後斷行符號。

    若您的本網環境存在代理等情況,以上方式擷取的IP可能並非您的真實公網IP。您可以將IP段0.0.0.0/0添加至PolarDB叢集白名單中,成功串連叢集後,執行SELECT pid,usename,datname,client_addr,state,query FROM pg_stat_activity WHERE state = 'active';命令擷取真實公網IP地址,並將其加入到叢集白名單中。隨後刪除白名單中的IP段0.0.0.0/0

    image

無法串連PolarDB叢集,報錯:Password authentication failed for user

資料庫帳號或密碼錯誤,請檢查您是否輸入正確。您可以前往PolarDB控制台,在配置與管理 > 帳號管理中管理資料庫帳號和密碼。

無法串連PolarDB叢集,報錯:Name or service not known

資料庫連接地址錯誤,請檢查您是否輸入正確,正確格式為pc-xxx.xxx.rds.aliyuncs.com。您可以前往PolarDB控制台,在基本資料 > 資料庫連接中管理您的資料庫連接地址。

無法串連PolarDB叢集,報錯:Connection timed out

可能是您當前環境的公網IP地址或IP段未被添加至PolarDB叢集的白名單中,或您填寫的公網IP地址或IP段存在錯誤。

本地環境的公網IP地址擷取方法如下:Linux作業系統:開啟終端,輸入curl ifconfig.me命令後斷行符號。

  • Windows作業系統:開啟命令提示字元,輸入curl ip.me命令後斷行符號。

  • macOS作業系統:開啟終端,輸入curl ifconfig.me命令後斷行符號。

若您的本網環境存在代理等情況,以上方式擷取的IP可能並非您的真實公網IP。您可以將IP段0.0.0.0/0添加至PolarDB叢集白名單中,成功串連叢集後,執行SELECT pid,usename,datname,client_addr,state,query FROM pg_stat_activity WHERE state = 'active';命令擷取真實公網IP地址,並將其加入到叢集白名單中。隨後刪除白名單中的IP段0.0.0.0/0

image

如何在DMS中將串連方式修改為使用叢集地址串連PolarDB叢集

若您使用DMS串連叢集,由於DMS預設使用主地址串連叢集。如果因業務需求需要將串連方式修改為使用叢集地址串連PolarDB叢集,請參考以下操作。

  1. 通過DMS串連叢集後,在左側導覽列的資料庫執行個體 > 已登入執行個體列表中,選擇目的地組群,單擊右鍵選擇編輯執行個體

    image

  2. 在編輯執行個體彈窗中,將基本資料 > 錄入方式修改為串連串地址,並填入叢集的叢集地址。單擊儲存image

重要

修改完成後,由於原SQL視窗使用的是主地址串連叢集,因此在修改串連串地址後,請關閉原SQL視窗,並重新開啟一個新的SQL視窗執行SQL。

相關文檔