準備
クラスタに接続する前に、次の操作を実行します。
クラスタエンドポイントとポートを取得する
集中型 PolarDB for PostgreSQL クラスタ
集中型 PolarDB for PostgreSQL クラスタとは、データベースエディションが Enterprise Edition または Standard Edition であるクラスタのことです。
PolarDB コンソール にログインします。クラスタリストで、クラスタの ID をクリックして、[基本情報] ページに移動します。そして、[データベース接続] セクションでクラスタの エンドポイント 情報を表示できます。
説明 接続には、クラスタの [クラスタエンドポイント] を使用することをお勧めします。デフォルトのポート番号は 3306 です。
アクセス環境に基づいて、[プライベート] または [パブリック] エンドポイントを使用します。
ECS インスタンスから PolarDB クラスタにアクセスする場合、ECS インスタンスが PolarDB クラスタと同じ VPC にある場合は、[プライベート] エンドポイントを使用します。
オンプレミス環境から PolarDB クラスタにアクセスする場合は、[パブリック] エンドポイントを使用します。デフォルトでは、パブリックエンドポイントは使用できません。[適用] をクリックして、パブリックエンドポイントを申請します。
[パブリックエンドポイント] を使用して接続する場合、PolarDB クラスタは最適なパフォーマンスを実現できません。
[プライベート] エンドポイントを使用して、仮想ホストおよび軽量サーバーから PolarDB クラスタに接続することはできません。
分散型 PolarDB for PostgreSQL クラスタ
PolarDB コンソール にログインします。クラスタリストで、クラスタの ID をクリックして、[基本情報] ページに移動します。そして、[データベース接続] セクションで エンドポイント 情報を表示できます。
説明 デフォルトでは、分散型 PolarDB for PostgreSQL クラスタには [プライマリエンドポイント] が 1 つだけあり、デフォルトのポート番号は 5432 です。
アクセス環境に基づいて、[プライベート] または [パブリック] エンドポイントを使用します。
ECS インスタンスから PolarDB クラスタにアクセスする場合、ECS インスタンスが PolarDB クラスタと同じ VPC にある場合は、[プライベート] エンドポイントを使用します。
オンプレミス環境から PolarDB クラスタにアクセスする場合は、[パブリック] エンドポイントを使用します。デフォルトでは、パブリックエンドポイントは使用できません。[適用] をクリックして、パブリックエンドポイントを申請します。
[パブリックエンドポイント] を使用して接続する場合、PolarDB クラスタは最適なパフォーマンスを実現できません。
[プライベート] エンドポイントを使用して、仮想ホストおよび軽量サーバーから PolarDB クラスタに接続することはできません。
データベースアカウントを作成する
PolarDB コンソール にログインします。クラスタリストで、クラスタの ID をクリックして、[基本情報] ページに移動します。左側のナビゲーションウィンドウで、 を選択して、データベースアカウントを作成します。
説明 [特権アカウント] または [標準アカウント] を作成できます。これらの 2 種類のアカウントには、異なる権限があります。ビジネス要件に基づいてデータベースアカウントを作成します。
クラスタホワイトリストを設定する
PolarDB コンソール にログインします。クラスタリストで、接続するクラスタの ID をクリックして、[基本情報] ページに移動します。左側のナビゲーションウィンドウで、 を選択し、IP ホワイトリスト または セキュリティグループ を追加します。
説明 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 ブロックをホワイトリストから削除します。

0.0.0.0/0 CIDR ブロックを IP ホワイトリストに追加すると、すべてのソースがクラスタにアクセスできるようになります。必要な場合を除き、0.0.0.0/0 をクラスタの IP ホワイトリストに追加しないでください。
準備が完了したら、クラスタに接続できます。
クラスタへの接続
クラスタに接続する方法はたくさんあります。実際のビジネス要件に基づいて、最適な接続方法を選択できます。以下は、クラスタに接続する方法の例です。
DMS を使用してクラスタに接続する
データ管理 (DMS) は、Alibaba Cloud が提供するグラフィカルなデータ管理ツールです。データ管理、スキーマ管理、ユーザー管理、セキュリティ監査、データトレンド、データ追跡、ビジネスインテリジェンス (BI) チャート、パフォーマンス最適化、サーバー管理など、さまざまなデータ管理サービスを提供します。他のツールを使用せずに、DMS を使用して PolarDB クラスタを直接管理できます。
PolarDB コンソール にログインします。クラスタリストで、接続するクラスタの ID をクリックして、[基本情報] ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。
表示されるダイアログボックスで、クラスタ用に作成したデータベースアカウントとパスワードを入力し、[ログイン] をクリックします。
クラスタにログインした後、左側のナビゲーションウィンドウで を選択して、 クラスタを管理します。
クライアントを使用してクラスタに接続する
クライアントを使用して PolarDB クラスタに接続できます。次の手順では、pgAdmin 4 v9.0 クライアントを使用してクラスタに接続します。
pgAdmin 4 クライアントを ダウンロード し、インストールします。
pgAdmin 4 クライアントを開き、[サーバー] を右クリックし、 を選択します。
[全般] タブで、接続名を設定します。[接続] タブで、クラスタ接続情報を設定し、[保存] をクリックします。

接続結果を表示します。接続情報が正しい場合、次のインターフェイスが表示され、接続が成功したことを示します。
説明 postgres はデフォルトのシステムデータベースです。このデータベースでは操作を実行しないでください。
psql を使用してクラスタに接続する
PostgreSQL ダウンロード から psql をダウンロードして、PolarDB クラスタに接続できます。PolarDB-Tools の psql を使用して、PolarDB クラスタに接続することもできます。
構文
psql -h <host> -p <port> -U <username> -d <dbname>
例
psql -h pc-xxx.rwlb.rds.aliyuncs.com -p 5432 -U testusername -d postgres
プログラミング言語でクラスタに接続する
PolarDB for PostgreSQL クラスタへの接続は、通常の PostgreSQL データベースへの接続と似ています。エンドポイント、ポート、アカウント、パスワードなどの接続パラメーターを変更するだけで済みます。以下は、特定のプログラミング言語で PolarDB クラスタに接続する方法の例です。
Java
この例では、Maven ベースの Java プロジェクトで PostgreSQL JDBC ドライバーを使用して、PolarDB for PostgreSQL クラスタに接続する方法について説明します。
PostgreSQL JDBC ドライバーの依存関係を pom.xml ファイルに追加します。サンプルコード:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.18</version>
</dependency>
クラスタに接続します。<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 クラスタに接続する方法について説明します。
psycopg2 ライブラリをインストールします。
pip3 install psycopg2-binary
クラスタに接続します。<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 クラスタに接続する方法について説明します。
lib/pq ドライバーをインストールします。
go get -u github.com/lib/pq
クラスタに接続します。<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 クラスタに接続できないのはなぜですか?
次の手順を使用して、問題のトラブルシューティングを行います。
PolarDB クラスタが [実行中] 状態であるかどうかを確認します。
データベースのエンドポイント、ポート、アカウント、パスワードが正しいかどうかを確認します。詳細については、「データベースエンドポイントとポートを取得する」をご参照ください。
ネットワークの状態を確認します。ECS インスタンスで ping または telnet コマンドを実行して、ネットワーク接続をテストできます。
[プライベート] エンドポイントを使用している場合:
ECS インスタンスと PolarDB クラスタが同じ VPC にあるかどうかを確認します。そうでない場合は、[プライベート] エンドポイントを使用できません。次のいずれかの方法を使用して、ECS インスタンスと PolarDB クラスタを同じ VPC に配置できます。
ECS インスタンスのプライベート IP アドレス、CIDR ブロック、またはセキュリティグループが PolarDB クラスタのホワイトリストに追加されているかどうかを確認します。詳細については、「クラスタホワイトリストを設定する」をご参照ください。
[パブリック] エンドポイントを使用している場合は、ECS インスタンスのパブリック IP アドレスまたはセキュリティグループが PolarDB クラスタのホワイトリストに追加されているかどうかを確認します。詳細については、「クラスタホワイトリストを設定する」をご参照ください。
説明 [プライベート] エンドポイントを使用して、仮想ホストおよび軽量サーバーから PolarDB クラスタに接続することはできません。
オンプレミス環境から PolarDB クラスタに接続できないのはなぜですか?
次の手順を使用して、問題のトラブルシューティングを行います。
PolarDB クラスタが [実行中] 状態であるかどうかを確認します。
データベースのエンドポイント、ポート、アカウント、パスワードが正しいかどうかを確認します。詳細については、「データベースエンドポイントとポートを取得する」をご参照ください。
説明 [パブリック] エンドポイントを使用する必要があります。PolarDB クラスタと同じ VPC にある ECS インスタンスを使用している場合は、[プライベート] エンドポイントを使用できます。
ネットワークの状態を確認します。ローカル環境で ping または telnet コマンドを実行して、ネットワーク接続をテストできます。
ローカル環境のパブリック 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 ブロックをホワイトリストから削除します。

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 ブロックをホワイトリストから削除します。

DMS を使用して PolarDB クラスタの接続方法をプライマリエンドポイントからクラスタエンドポイントに変更するにはどうすればよいですか?
DMS を使用してクラスタに接続する場合、システムはデフォルトで [プライマリエンドポイント] を使用してクラスタに接続します。[クラスタエンドポイント] を使用して PolarDB クラスタに接続する必要がある場合は、次の手順を実行します。
DMS を使用してクラスタに接続した後、左側のナビゲーションウィンドウで > [接続されたインスタンス] を選択します。クラスタを見つけて右クリックし、[編集] を選択します。

[編集] ダイアログボックスで、[基本情報] セクションに移動します。[接続方法] パラメーターを [接続文字列アドレス] に変更し、[クラスタエンドポイント] を入力して、[保存] をクリックします。
重要 PolarDB クラスタにアクセスするための接続文字列を変更した後、元の SQL ウィンドウを閉じて新しいウィンドウを開き、更新された設定が有効になっていることを確認します。