事前準備
データベースクラスターに接続する前に、次のタスクを完了してください:
データベースエンドポイントとポートの取得
PolarDB コンソールに移動します。[クラスターリスト] で、対象クラスターの ID をクリックしてクラスター詳細ページに移動します。[データベース接続] セクションで、データベースエンドポイント (プライマリエンドポイント、クラスターエンドポイント、カスタムエンドポイント) を取得します。
説明 [クラスターエンドポイント] を使用します。デフォルトのポートは 3306 です。
アクセス環境に応じて [プライベートネットワーク] または [パブリックネットワーク] を選択します。
Elastic Compute Service (ECS) インスタンスを使用して PolarDB にアクセスし、ECS インスタンスと PolarDB クラスターが同じ VPC にある場合は、[プライベートネットワーク] を選択します。
オンプレミス環境から PolarDB にアクセスする場合は、[パブリックネットワーク] を選択します。パブリックエンドポイントを取得するには、右側の [リクエスト] をクリックします。
[パブリックネットワーク] はインターネットです。[パブリックネットワーク] 経由でクラスターにアクセスすると、ご利用の PolarDB クラスターで最適なパフォーマンスが得られない場合があります。
仮想ホストまたはシンプルアプリケーションサーバーから [プライベートネットワーク] エンドポイントを使用して PolarDB クラスターに接続することはサポートされていません。
データベースアカウントの作成
PolarDB コンソールに移動します。[クラスターリスト] で、対象クラスターの ID をクリックしてクラスター詳細ページに移動します。[] ページで、データベースアカウントを作成します。
説明 データベースアカウントは [特権アカウント] と [標準アカウント] に分類されます。これら 2 種類のアカウントは権限が異なります。必要に応じてデータベースアカウントを作成してください。
クラスターのホワイトリストの設定
PolarDB コンソールに移動します。[クラスターリスト] で、対象クラスターの ID をクリックしてクラスター詳細ページに移動します。[] ページで、IP ホワイトリストまたはセキュリティグループを追加します。

説明 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 クラスターのホワイトリストに追加できます。クラスターに正常に接続した後、SHOW PROCESSLIST; コマンドを実行して実際のパブリック IP アドレスを取得し、それをクラスターのホワイトリストに追加します。その後、IP アドレス範囲 0.0.0.0/0 をホワイトリストから削除します。

IP アドレス範囲 0.0.0.0/0 はすべてのソースからのアクセスを許可するため、重大なセキュリティ上の脅威となります。必要な場合を除き、ホワイトリストに追加しないでください。
事前準備が完了したら、データベースクラスターに接続します。
データベースクラスターへの接続
データベースクラスターにはいくつかの方法で接続できます。ニーズに合った方法を選択してください。以下のセクションで例を示します:
DMS を使用したクラスターへの接続
DMS は Alibaba Cloud が提供するグラフィカルなデータ管理ツールです。データ管理、構造管理、ユーザー権限付与、セキュリティ監査、データ傾向分析、データ追跡、BI チャート、パフォーマンス最適化、サーバー管理を統合しています。他のツールを使わずに、DMS で直接 PolarDB クラスターを管理できます。
PolarDB コンソールに移動します。[クラスターリスト] で、対象クラスターの ID をクリックしてクラスター詳細ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。
表示されるダイアログボックスで、PolarDB for MySQL クラスターで作成した [データベースアカウント] と [データベースパスワード] を入力し、[ログイン] をクリックします。
ログイン後、左側のナビゲーションウィンドウの [ログイン中のインスタンス] リストにログインした PolarDB for MySQL クラスターが表示され、管理操作を実行できます。
クライアントを使用したクラスターへの接続
任意の汎用クライアントを使用して PolarDB クラスターに接続できます。このセクションでは、MySQL Workbench 8.0.29 を例として説明します。他のクライアントの手順も同様です。
MySQL Workbench をインストールします。公式のダウンロードリンクについては、MySQL Workbench のダウンロードページをご参照ください。
MySQL Workbench を開き、 を選択します。
接続情報を入力し、[OK] をクリックします。

パラメーター | 説明 | 例 |
ホスト名 | データベースエンドポイント。 | pc-2***.rwlb.rds.aliyuncs.com |
ポート | データベースエンドポイントのポート番号。 | 3306 |
ユーザー名 | データベースアカウント。 | polardb_mysql_user |
パスワード | データベースアカウントのパスワード。 | Pass***233 |
コマンドラインを使用したクラスターへの接続
ご利用のサーバーに MySQL クライアントがインストールされている場合は、コマンドラインを使用して PolarDB for MySQL データベースクラスターに接続できます。
構文:
mysql -h<endpoint> -P<port> -u<database_username> -p<database_user_password>
例:
mysql -h pc-2***.rwlb.rds.aliyuncs.com -P3306 -upolardb_mysql_user -pPass***233
パラメーター | 説明 | 例 |
-h | データベースエンドポイント。 | pc-2***.rwlb.rds.aliyuncs.com |
-P | データベースエンドポイントのポート番号。 | 3306 |
-u | データベースアカウント。 | polardb_mysql_user |
-p | データベースアカウントのパスワード。 | Pass***233 |
アプリケーションを使用したクラスターへの接続
PolarDB for MySQL クラスターへの接続方法は、他の MySQL データベースへの接続方法と同じです。データベースのエンドポイント、ポート、アカウント、パスワードを置き換えるだけです。以下のセクションでは、さまざまなプログラミング言語を使用してアプリケーションから PolarDB データベースにアクセスする方法の例を示します:
Java
このセクションでは、Maven プロジェクトを例に、MySQL Java Database Connectivity (JDBC) ドライバーを使用して PolarDB for MySQL クラスターに接続する方法を示します。
まず、MySQL JDBC ドライバーの依存関係を pom.xml ファイルに追加します。以下のコードは例です:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
クラスターに接続します。<HOST>、ポート番号、<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 DatabaseConnection {
public DatabaseConnection() {
}
public static void main(String[] args) {
// 接続するデータベースのエンドポイント、ポート、名前。
String url = "jdbc:mysql://<HOST>:3306/<DATABASE>?useSSL=false&serverTimezone=UTC";
// データベースアカウント。
String user = "<USER>";
// データベースアカウントのパスワード。
String password = "<PASSWORD>";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
// 取得するデータテーブルの名前。
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 var7) {
var7.printStackTrace();
}
}
}
Python
このセクションでは、Python 3 を例に、PyMySQL ライブラリを使用して PolarDB for MySQL クラスターに接続する方法を示します。
まず、PyMySQL ライブラリをインストールします。インストールしていない場合は、次のコマンドを実行します:
pip3 install PyMySQL
クラスターに接続します。<HOST>、ポート番号、<USER>、<PASSWORD>、<DATABASE>、および <YOUR_TABLE_NAME> パラメーターを実際の情報に置き換えます。
import pymysql
# データベース接続パラメーター
host = '<HOST>' # PolarDB クラスターのエンドポイント
port = 3306 # デフォルトのポートは 3306
user = '<USER>' # データベースアカウント
password = '<PASSWORD>' # データベースアカウントのパスワード
database = '<DATABASE>' # 接続するデータベースの名前
try:
# データベース接続を作成
connection = pymysql.connect(
host=host,
port=port,
user=user,
passwd=password,
db=database
)
# カーソルを取得
with connection.cursor() as cursor:
# SQL クエリを実行
sql = "SELECT * FROM `<YOUR_TABLE_NAME>`" # 取得するデータテーブルの名前
cursor.execute(sql)
# クエリ結果を取得
results = cursor.fetchall()
for row in results:
print(row)
finally:
# データベース接続を閉じる
if 'connection' in locals() and connection.open:
connection.close()
Go
このセクションでは、Go 1.23.0 を例に、database/sql パッケージと go-sql-driver/mysql ドライバーを使用して PolarDB for MySQL クラスターに接続する方法を示します。
まず、go-sql-driver/mysql ドライバーをインストールします。次のコマンドを実行してインストールできます:
go get -u github.com/go-sql-driver/mysql
クラスターに接続します。<HOST>、ポート番号、<USER>、<PASSWORD>、<DATABASE>、および <YOUR_TABLE_NAME> パラメーターを実際の情報に置き換えます。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// データベース接続パラメーター
dbHost := "<HOST>" // PolarDB クラスターのエンドポイント
dbPort := "3306" // デフォルトのポートは 3306
dbUser := "<USER>" // データベースアカウント
dbPass := "<PASSWORD>" // データベースアカウントのパスワード
dbName := "<DATABASE>" // 接続するデータベースの名前
// データソース名 (DSN) を構築
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPass, dbHost, dbPort, dbName)
// データベース接続を開く
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatalf("データベースへの接続に失敗しました: %v", err)
}
defer db.Close()
// 接続をテスト
err = db.Ping()
if err != nil {
log.Fatalf("データベースへの ping に失敗しました: %v", err)
}
// カーソルを作成
var result string
err = db.QueryRow("SELECT VERSION()").Scan(&result)
if err != nil {
log.Fatalf("クエリの実行に失敗しました: %v", err)
}
// データベースのバージョンを出力
fmt.Printf("データベースに接続しました、バージョン: %s\n", result)
// SQL クエリを実行
rows, err := db.Query("SELECT * FROM `<YOUR_TABLE_NAME>`") // 取得するデータテーブルの名前
if err != nil {
log.Fatalf("クエリの実行に失敗しました: %v", err)
}
defer rows.Close()
}
よくある質問
ECS インスタンスが PolarDB クラスターに接続できない
次の手順で問題をトラブルシューティングします:
PolarDB クラスターが [実行中] の状態であるか確認します。
データベースのエンドポイント、ポート、アカウント、パスワードが正しいか確認します。詳細については、「データベースエンドポイントとポートの取得」をご参照ください。
ネットワークの問題を確認します。ECS インスタンスで ping <database endpoint> または telnet <database endpoint> <port> を実行して、ネットワーク接続をテストできます。
[プライベートネットワーク] エンドポイントを使用している場合:
ECS インスタンスと PolarDB クラスターが同じ VPC にあるか確認します。同じ VPC にない場合、[プライベートネットワーク] エンドポイントは使用できません。次のいずれかのソリューションを使用して、ECS インスタンスと PolarDB クラスターを同じ VPC に配置します:
ECS インスタンスのプライベート IP アドレス、IP アドレス範囲、またはセキュリティグループがクラスターのホワイトリストに追加されているか確認します。
[パブリックネットワーク] エンドポイントを使用している場合は、ECS インスタンスのパブリック IP アドレスまたはセキュリティグループがクラスターのホワイトリストに追加されているか確認します。
説明 仮想ホストまたはシンプルアプリケーションサーバーから [プライベートネットワーク] エンドポイントを使用して PolarDB クラスターに接続することはサポートされていません。
オンプレミス環境が PolarDB クラスターに接続できない
次の手順で問題をトラブルシューティングします:
PolarDB クラスターが [実行中] の状態であるか確認します。
データベースのエンドポイント、ポート、アカウント、パスワードが正しいか確認します。詳細については、「データベースエンドポイントとポートの取得」をご参照ください。
説明 データベースエンドポイントは [パブリックネットワーク] エンドポイントである必要があります。PolarDB クラスターと同じ VPC にある ECS インスタンスを使用している場合は、[プライベートネットワーク] エンドポイントを使用できます。
ネットワークの問題を確認します。オンプレミス環境で ping <database endpoint> または telnet <database endpoint> <port> を実行して、ネットワーク接続をテストできます。
オンプレミス環境のパブリック IP アドレスまたは IP アドレス範囲がクラスターのホワイトリストに追加されているか確認します。
オンプレミス環境のパブリック IP アドレスは、次のように取得できます:
Linux オペレーティングシステム:ターミナルを開き、curl ifconfig.me コマンドを実行します。
Windows オペレーティングシステム:コマンドプロンプトを開き、curl ip.me コマンドを実行します。
macOS オペレーティングシステム:ターミナルを開き、curl ifconfig.me コマンドを実行します。
オンプレミスのネットワーク環境でプロキシサーバーを使用しているか、または同様の構成がある場合、上記の方法で取得した IP アドレスが実際のパブリック IP アドレスではない可能性があります。IP アドレス範囲 0.0.0.0/0 を PolarDB クラスターのホワイトリストに追加できます。クラスターに正常に接続した後、SHOW PROCESSLIST; コマンドを実行して実際のパブリック IP アドレスを取得し、それをクラスターのホワイトリストに追加します。その後、IP アドレス範囲 0.0.0.0/0 をホワイトリストから削除します。

「Access denied for user 'xxx'@'xxx' (using password: YES)」というエラーで PolarDB クラスターに接続できない
データベースアカウントまたはパスワードが正しくありません。正しく入力したか確認してください。PolarDB コンソールに移動し、[] ページでデータベースアカウントとパスワードを管理できます。
「Unknown MySQL server host 'xxx'」というエラーで PolarDB クラスターに接続できない
データベースエンドポイントが正しくありません。正しく入力したか確認してください。正しいフォーマットは pc-xxxxxx.rwlb.rds.aliyuncs.com です。PolarDB コンソールに移動し、[] セクションでデータベースエンドポイントを管理できます。
「Can't connect to MySQL server on 'xxx'」または「Connection timed out」というエラーで PolarDB クラスターに接続できない
これは、現在の環境のパブリック 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 クラスターのホワイトリストに追加できます。クラスターに正常に接続した後、SHOW PROCESSLIST; コマンドを実行して実際のパブリック IP アドレスを取得し、それをクラスターのホワイトリストに追加します。その後、IP アドレス範囲 0.0.0.0/0 をホワイトリストから削除します。

DMS の接続方法を変更して、クラスターエンドポイント を使用して PolarDB クラスターに接続するにはどうすればよいですか?
DMS を使用してクラスターに接続する場合、DMS はデフォルトで [プライマリエンドポイント] を使用してクラスターに接続するため、特定の機能 (In-Memory Column Index (IMCI) や PolarDB for AI など) のために、接続方法を [クラスターエンドポイント] を使用して PolarDB クラスターに接続するように変更する必要があります。これにより、データベースプロキシ (Proxy) が SQL 文を対応する機能ノードに自動的にルーティングします。
手順:
DMS を介してクラスターに接続した後、左側のナビゲーションウィンドウの [] リストで対象のクラスターを見つけ、右クリックして [インスタンスの編集] を選択します。

[インスタンスの編集] ダイアログボックスで、[] を [接続文字列] に変更し、クラスターの [クラスターエンドポイント] を入力して [保存] をクリックします。
重要 変更が完了したら、元の SQL ウィンドウを閉じて新しい SQL ウィンドウを開いて SQL を実行してください。元の SQL ウィンドウは [プライマリエンドポイント] を使用してクラスターに接続しており、[接続文字列アドレス] を変更したためです。
クラスターエンドポイントの読み取り専用ノードの重みを 0 に設定してからノードを削除すると、接続エラーが発生するのはなぜですか?
シナリオ:クラスターエンドポイントから読み取り専用ノードを削除する必要があります。ノードへの接続に影響を与えないように、まず読み取り専用ノードの読み書き分離の重みを 0 に設定します。重みを 0 に設定した後、後続の読み取りリクエストはこの読み取り専用ノードに送信されないと想定します。しかし、クラスターエンドポイントからノードを削除すると、アプリケーション側で接続エラーが発生します。
原因:クラスターエンドポイントには 2 つの [負荷バランスポリシー] があります:[アクティブなリクエストベースのロードバランシング] と [接続数に基づく負荷分散]:
解決策:
クラスターエンドポイントの [負荷バランスポリシー] を [アクティブなリクエストベースのロードバランシング] に切り替えます。
対象の読み取り専用ノードの読み書き分離の重みを 0 に設定します。
読み取り専用ノードを削除します。