すべてのプロダクト
Search
ドキュメントセンター

PolarDB:データベースへの接続

最終更新日:Jun 12, 2025

このトピックでは、PolarDB for PostgreSQL (Oracle 互換) クラスタに接続する方法について説明します。

準備

クラスタに接続する前に、次の操作を実行します。

  • クラスタエンドポイントとポートを取得する

    PolarDB コンソール にログインします。クラスタリストで、クラスタの ID をクリックして、[基本情報] ページに移動します。そして、[データベース接続] セクションで エンドポイント 情報を表示できます。image

    説明
    • 接続には、クラスタの [クラスタエンドポイント] を使用することをお勧めします。デフォルトのポート番号は 1521 です。

    • アクセス環境に基づいて、[プライベート] または [パブリック] エンドポイントを使用します。

      • ECS インスタンスから PolarDB クラスタにアクセスする場合、ECS インスタンスが PolarDB クラスタと同じ VPC にある場合は、[プライベート] エンドポイントを使用します。

      • オンプレミス環境から PolarDB クラスタにアクセスする場合は、[パブリック] エンドポイントを使用します。デフォルトでは、パブリックエンドポイントは使用できません。[適用] をクリックして、パブリックエンドポイントを申請します。

    • [パブリックエンドポイント] を使用して接続する場合、PolarDB クラスタは最適なパフォーマンスを実現できません。

    • [プライベート] エンドポイントを使用して、仮想ホストおよび軽量サーバーから PolarDB クラスタに接続することはできません。

  • データベースアカウントを作成する

    PolarDB コンソール にログインします。クラスタリストで、クラスタの ID をクリックして、[基本情報] ページに移動します。左側のナビゲーションウィンドウで、[設定と管理] > [アカウント] を選択して、データベースアカウントを作成します。image

    説明

    [特権アカウント] または [標準アカウント] を作成できます。これらの 2 種類のアカウントには、異なる権限があります。ビジネス要件に基づいてデータベースアカウントを作成します。

  • クラスタホワイトリストを設定する

    PolarDB コンソール にログインします。クラスタリストで、接続するクラスタの ID をクリックして、[基本情報] ページに移動します。左側のナビゲーションウィンドウで、[設定と管理] > [クラスタホワイトリスト] を選択し、IP ホワイトリスト または セキュリティグループ を追加します。image

    説明
    • ECS インスタンスから PolarDB クラスタにアクセスする場合、ECS インスタンスが PolarDB クラスタと同じ VPC にある場合は、IP アドレスホワイトリストを作成し、ECS インスタンスの内部 IP アドレスをホワイトリストに追加するか、ECS インスタンスが属するセキュリティグループを追加します。

    • ECS インスタンスから PolarDB クラスタにアクセスする場合、ECS インスタンスが PolarDB クラスタと異なる VPC にある場合は、IP アドレスホワイトリストを作成し、ECS インスタンスのパブリック IP アドレスをホワイトリストに追加するか、ECS インスタンスが属するセキュリティグループを追加します。

    • オンプレミス環境から PolarDB クラスタにアクセスする場合は、IP アドレスホワイトリストを作成し、オンプレミス環境のパブリック IP アドレスをホワイトリストに追加します。

      オンプレミス環境のパブリック IP アドレスを取得するには、次の方法を使用します。

      • Linux: CLI を開き、curl ifconfig.me コマンドを入力して、Enter キーを押します。

      • Windows:コマンドプロンプトを開き、curl ip.me コマンドを入力して、Enter キーを押します。

      • macOS:ターミナルを起動し、curl ifconfig.me コマンドを入力して、Enter キーを押します。

      オンプレミスネットワーク環境でプロキシが使用されている場合、前述の方法で取得した IP アドレスは実際のパブリック IP アドレスではない可能性があります。0.0.0.0/0 CIDR ブロックを PolarDB クラスタのホワイトリストに追加できます。クラスタに接続した後、SELECT pid,usename,datname,client_addr,state,query FROM pg_stat_activity WHERE state = 'active'; コマンドを実行して実際のパブリック IP アドレスを取得し、クラスタのホワイトリストに追加します。次に、0.0.0.0/0 CIDR ブロックをホワイトリストから削除します。

      image

    • 0.0.0.0/0 CIDR ブロックを IP ホワイトリストに追加すると、すべてのソースがクラスタにアクセスできるようになります。必要な場合を除き、0.0.0.0/0 をクラスタの IP ホワイトリストに追加しないでください。

準備が完了したら、クラスタに接続できます。

クラスタへの接続

クラスタに接続する方法はたくさんあります。実際のビジネス要件に基づいて、最適な接続方法を選択できます。以下は、クラスタに接続する方法の例です。

DMS を使用してクラスタに接続する

データ管理 (DMS) は、Alibaba Cloud が提供するグラフィカルなデータ管理ツールです。データ管理、スキーマ管理、ユーザー管理、セキュリティ監査、データトレンド、データ追跡、ビジネスインテリジェンス (BI) チャート、パフォーマンス最適化、サーバー管理など、さまざまなデータ管理サービスを提供します。他のツールを使用せずに、DMS を使用して PolarDB クラスタを直接管理できます。

  1. PolarDB コンソール にログインします。クラスタリストで、接続するクラスタの ID をクリックして、[基本情報] ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。image

  2. 表示されるダイアログボックスで、クラスタ用に作成したデータベースアカウントとパスワードを入力し、[ログイン] をクリックします。image

  3. クラスタにログインした後、左側のナビゲーションウィンドウで [データベースインスタンス] > [接続されたインスタンス] を選択して、 クラスタを管理します。image

クライアントを使用してクラスタに接続する

クライアントを使用して PolarDB クラスタに接続できます。次の手順では、pgAdmin 4 v9.0 クライアントを使用してクラスタに接続します。

  1. pgAdmin 4 クライアントを ダウンロード し、インストールします。

  2. pgAdmin 4 クライアントを開き、[サーバー] を右クリックし、[登録] > [サーバー...] を選択します。image

  3. [全般] タブで、接続名を設定します。[接続] タブで、クラスタ接続情報を設定し、[保存] をクリックします。image

    image

    パラメーター

    説明

    [ホスト名/アドレス]

    PolarDB クラスタの エンドポイントとポート

    • ECS インスタンスから PolarDB クラスタにアクセスする場合、ECS インスタンスが PolarDB クラスタと同じ VPC にある場合は、[プライベート] エンドポイントとポートを指定します。

    • オンプレミス環境から PolarDB クラスタにアクセスする場合は、[パブリック] エンドポイントとポートを指定します。

    • デフォルトのポート番号は 1521 です。

    [ポート]

    [ユーザー名]

    PolarDB クラスタの データベースアカウントとパスワード

    [パスワード]

  4. 接続結果を表示します。接続情報が正しい場合、次のインターフェイスが表示され、接続が成功したことを示します。image

    説明

    postgres はデフォルトのシステムデータベースです。このデータベースでは操作を実行しないでください。

psql を使用してクラスタに接続する

PostgreSQL ダウンロード から psql をダウンロードして、PolarDB クラスタに接続できます。PolarDB-Tools の psql を使用して、PolarDB クラスタに接続することもできます。

説明
  • psql を使用したクラスタ接続方法は、Windows システムと Linux システムで同じです。

  • psql の使用方法の詳細については、「psql」をご参照ください。

構文

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 for PostgreSQL (Oracle 互換) クラスタへの接続は、通常の PostgreSQL データベースへの接続と似ています。エンドポイント、ポート、アカウント、パスワードなどの接続パラメーターを変更するだけで済みます。以下は、特定のプログラミング言語で PolarDB クラスタに接続する方法の例です。

Java

この例では、Maven ベースの Java プロジェクトで PostgreSQL JDBC ドライバーを使用して、PolarDB for PostgreSQL (Oracle 互換) クラスタに接続する方法について説明します。

  1. PostgreSQL JDBC ドライバーの依存関係を pom.xml ファイルに追加します。サンプルコード:

    <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 {
                // PostgreSQL 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

この例では、Python 3 で psycopg2 ライブラリを使用して、PolarDB for 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("Error:", e)
    finally:
        // 接続を閉じます。
        if 'cursor' in locals():
            cursor.close()
        if 'conn' in locals():
            conn.close()

Go

この例では、Go 1.23.0 で database/sql パッケージと lib/pq ドライバーを使用して、PolarDB for 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" // PostgreSQL ドライバーを初期化します。
    )
    
    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("PostgreSQL に接続しました!")
    
        // クエリを実行します。
        rows, err := db.Query("SELECT * FROM <YOUR_TABLE_NAME>")
        if err != nil {
            log.Fatal(err)
        }
        defer rows.Close()
    }
    

FAQ

ECS インスタンスを PolarDB クラスタに接続できないのはなぜですか?

次の手順を使用して、問題のトラブルシューティングを行います。

  1. PolarDB クラスタが [実行中] 状態であるかどうかを確認します。

  2. データベースのエンドポイント、ポート、アカウント、パスワードが正しいかどうかを確認します。詳細については、「データベースエンドポイントとポートを取得する」をご参照ください。

  3. ネットワークの状態を確認します。ECS インスタンスで ping または telnet コマンドを実行して、ネットワーク接続をテストできます。

    1. [プライベート] エンドポイントを使用している場合:

      1. ECS インスタンスと PolarDB クラスタが同じ VPC にあるかどうかを確認します。そうでない場合は、[プライベート] エンドポイントを使用できません。次のいずれかの方法を使用して、ECS インスタンスと PolarDB クラスタを同じ VPC に配置できます。

      2. ECS インスタンスのプライベート IP アドレス、CIDR ブロック、またはセキュリティグループが PolarDB クラスタのホワイトリストに追加されているかどうかを確認します。詳細については、「クラスタホワイトリストを設定する」をご参照ください。

    2. [パブリック] エンドポイントを使用している場合は、ECS インスタンスのパブリック IP アドレスまたはセキュリティグループが PolarDB クラスタのホワイトリストに追加されているかどうかを確認します。詳細については、「クラスタホワイトリストを設定する」をご参照ください。

説明

[プライベート] エンドポイントを使用して、仮想ホストおよび軽量サーバーから PolarDB クラスタに接続することはできません。

オンプレミス環境から PolarDB クラスタに接続できないのはなぜですか?

次の手順を使用して、問題のトラブルシューティングを行います。

  1. PolarDB クラスタが [実行中] 状態であるかどうかを確認します。

  2. データベースのエンドポイント、ポート、アカウント、パスワードが正しいかどうかを確認します。詳細については、「データベースエンドポイントとポートを取得する」をご参照ください。

  3. 説明

    [パブリック] エンドポイントを使用する必要があります。PolarDB クラスタと同じ VPC にある ECS インスタンスを使用している場合は、[プライベート] エンドポイントを使用できます。

  4. ネットワークの状態を確認します。ローカル環境で ping または telnet コマンドを実行して、ネットワーク接続をテストできます。

  5. ローカル環境のパブリック IP アドレスまたは CIDR ブロックが PolarDB クラスタのホワイトリストに追加されているかどうかを確認します。詳細については、「ホワイトリストを設定する」をご参照ください。

    オンプレミス環境のパブリック IP アドレスを取得するには、次の方法を使用します。

    • Linux: CLI を開き、curl ifconfig.me コマンドを入力して、Enter キーを押します。

    • Windows:コマンドプロンプトを開き、curl ip.me コマンドを入力して、Enter キーを押します。

    • macOS:ターミナルを起動し、curl ifconfig.me コマンドを入力して、Enter キーを押します。

    オンプレミスネットワーク環境でプロキシが使用されている場合、前述の方法で取得した IP アドレスは実際のパブリック IP アドレスではない可能性があります。0.0.0.0/0 CIDR ブロックを PolarDB クラスタのホワイトリストに追加できます。クラスタに接続した後、SELECT pid,usename,datname,client_addr,state,query FROM pg_stat_activity WHERE state = 'active'; コマンドを実行して実際のパブリック IP アドレスを取得し、クラスタのホワイトリストに追加します。次に、0.0.0.0/0 CIDR ブロックをホワイトリストから削除します。

    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 アドレスまたは CIDR ブロックが PolarDB クラスタのホワイトリストに追加されていないか、ホワイトリストに追加されたパブリック IP アドレスまたは CIDR ブロックが正しくありません。

オンプレミス環境のパブリック IP アドレスを取得するには、次の方法を使用します。

  • Linux: CLI を開き、curl ifconfig.me コマンドを入力して、Enter キーを押します。

  • Windows:コマンドプロンプトを開き、curl ip.me コマンドを入力して、Enter キーを押します。

  • macOS:ターミナルを起動し、curl ifconfig.me コマンドを入力して、Enter キーを押します。

オンプレミスネットワーク環境でプロキシが使用されている場合、前述の方法で取得した IP アドレスは実際のパブリック IP アドレスではない可能性があります。0.0.0.0/0 CIDR ブロックを PolarDB クラスタのホワイトリストに追加できます。クラスタに接続した後、SELECT pid,usename,datname,client_addr,state,query FROM pg_stat_activity WHERE state = 'active'; コマンドを実行して実際のパブリック IP アドレスを取得し、クラスタのホワイトリストに追加します。次に、0.0.0.0/0 CIDR ブロックをホワイトリストから削除します。

image

DMS を使用して PolarDB クラスタの接続方法をプライマリエンドポイントからクラスタエンドポイントに変更するにはどうすればよいですか?

DMS を使用してクラスタに接続する場合、システムはデフォルトで [プライマリエンドポイント] を使用してクラスタに接続します。[クラスタエンドポイント] を使用して PolarDB クラスタに接続する必要がある場合は、次の手順を実行します。

  1. DMS を使用してクラスタに接続した後、左側のナビゲーションウィンドウで [データベースインスタンス] > [接続されたインスタンス] を選択します。クラスタを見つけて右クリックし、[編集] を選択します。

    image

  2. [編集] ダイアログボックスで、[基本情報] セクションに移動します。[接続方法] パラメーターを [接続文字列アドレス] に変更し、[クラスタエンドポイント] を入力して、[保存] をクリックします。image

重要

PolarDB クラスタにアクセスするための接続文字列を変更した後、元の SQL ウィンドウを閉じて新しいウィンドウを開き、更新された設定が有効になっていることを確認します。

参照