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

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

最終更新日:Jan 31, 2026

このトピックでは、PolarDB for MySQL クラスターに接続する方法について説明します。

事前準備

データベースクラスターに接続する前に、次のタスクを完了してください:

  • データベースエンドポイントとポートの取得

    PolarDB コンソールに移動します。[クラスターリスト] で、対象クラスターの ID をクリックしてクラスター詳細ページに移動します。[データベース接続] セクションで、データベースエンドポイント (プライマリエンドポイント、クラスターエンドポイント、カスタムエンドポイント) を取得します。image

    説明
    • [クラスターエンドポイント] を使用します。デフォルトのポートは 3306 です。

    • アクセス環境に応じて [プライベートネットワーク] または [パブリックネットワーク] を選択します。

      • Elastic Compute Service (ECS) インスタンスを使用して PolarDB にアクセスし、ECS インスタンスと PolarDB クラスターが同じ VPC にある場合は、[プライベートネットワーク] を選択します。

      • オンプレミス環境から PolarDB にアクセスする場合は、[パブリックネットワーク] を選択します。パブリックエンドポイントを取得するには、右側の [リクエスト] をクリックします。

    • [パブリックネットワーク] はインターネットです。[パブリックネットワーク] 経由でクラスターにアクセスすると、ご利用の PolarDB クラスターで最適なパフォーマンスが得られない場合があります。

    • 仮想ホストまたはシンプルアプリケーションサーバーから [プライベートネットワーク] エンドポイントを使用して PolarDB クラスターに接続することはサポートされていません。

  • データベースアカウントの作成

    PolarDB コンソールに移動します。[クラスターリスト] で、対象クラスターの ID をクリックしてクラスター詳細ページに移動します。[設定と管理 > アカウント管理] ページで、データベースアカウントを作成します。image

    説明

    データベースアカウントは [特権アカウント] と [標準アカウント] に分類されます。これら 2 種類のアカウントは権限が異なります。必要に応じてデータベースアカウントを作成してください。

  • クラスターのホワイトリストの設定

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

      image

    • IP アドレス範囲 0.0.0.0/0 はすべてのソースからのアクセスを許可するため、重大なセキュリティ上の脅威となります。必要な場合を除き、ホワイトリストに追加しないでください。

事前準備が完了したら、データベースクラスターに接続します。

データベースクラスターへの接続

データベースクラスターにはいくつかの方法で接続できます。ニーズに合った方法を選択してください。以下のセクションで例を示します:

DMS を使用したクラスターへの接続

DMS は Alibaba Cloud が提供するグラフィカルなデータ管理ツールです。データ管理、構造管理、ユーザー権限付与、セキュリティ監査、データ傾向分析、データ追跡、BI チャート、パフォーマンス最適化、サーバー管理を統合しています。他のツールを使わずに、DMS で直接 PolarDB クラスターを管理できます。

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

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

  3. ログイン後、左側のナビゲーションウィンドウの [ログイン中のインスタンス] リストにログインした PolarDB for MySQL クラスターが表示され、管理操作を実行できます。image

クライアントを使用したクラスターへの接続

任意の汎用クライアントを使用して PolarDB クラスターに接続できます。このセクションでは、MySQL Workbench 8.0.29 を例として説明します。他のクライアントの手順も同様です。

  1. MySQL Workbench をインストールします。公式のダウンロードリンクについては、MySQL Workbench のダウンロードページをご参照ください。

  2. MySQL Workbench を開き、データベース > データベースに接続 を選択します。

  3. 接続情報を入力し、[OK] をクリックします。

    连接界面

    パラメーター

    説明

    ホスト名

    データベースエンドポイント

    pc-2***.rwlb.rds.aliyuncs.com

    ポート

    データベースエンドポイントのポート番号。

    説明

    デフォルトのポートは 3306 です。

    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 です。

  • ポートがデフォルトポートの場合、このパラメーターは省略できます。

3306

-u

データベースアカウント

polardb_mysql_user

-p

データベースアカウントのパスワード。

説明

このパラメーターは必須です。

  • このパラメーターを省略すると、Enter password の後にパスワードの入力を求められます。

  • このパラメーターを含める場合、-p とパスワードの間にスペースを入れないでください。

Pass***233

アプリケーションを使用したクラスターへの接続

PolarDB for MySQL クラスターへの接続方法は、他の MySQL データベースへの接続方法と同じです。データベースのエンドポイント、ポート、アカウント、パスワードを置き換えるだけです。以下のセクションでは、さまざまなプログラミング言語を使用してアプリケーションから PolarDB データベースにアクセスする方法の例を示します:

Java

このセクションでは、Maven プロジェクトを例に、MySQL Java Database Connectivity (JDBC) ドライバーを使用して PolarDB for MySQL クラスターに接続する方法を示します。

  1. まず、MySQL JDBC ドライバーの依存関係を pom.xml ファイルに追加します。以下のコードは例です:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
  2. クラスターに接続します。<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 クラスターに接続する方法を示します。

  1. まず、PyMySQL ライブラリをインストールします。インストールしていない場合は、次のコマンドを実行します:

    pip3 install PyMySQL
  2. クラスターに接続します。<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 クラスターに接続する方法を示します。

  1. まず、go-sql-driver/mysql ドライバーをインストールします。次のコマンドを実行してインストールできます:

    go get -u github.com/go-sql-driver/mysql
  2. クラスターに接続します。<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 クラスターに接続できない

次の手順で問題をトラブルシューティングします:

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

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

  3. ネットワークの問題を確認します。ECS インスタンスで ping <database endpoint> または telnet <database endpoint> <port> を実行して、ネットワーク接続をテストできます。

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

      1. ECS インスタンスと PolarDB クラスターが同じ VPC にあるか確認します。同じ VPC にない場合、[プライベートネットワーク] エンドポイントは使用できません。次のいずれかのソリューションを使用して、ECS インスタンスと PolarDB クラスターを同じ VPC に配置します:

      2. ECS インスタンスのプライベート IP アドレス、IP アドレス範囲、またはセキュリティグループがクラスターのホワイトリストに追加されているか確認します。

    2. [パブリックネットワーク] エンドポイントを使用している場合は、ECS インスタンスのパブリック IP アドレスまたはセキュリティグループがクラスターのホワイトリストに追加されているか確認します。

説明

仮想ホストまたはシンプルアプリケーションサーバーから [プライベートネットワーク] エンドポイントを使用して PolarDB クラスターに接続することはサポートされていません。

オンプレミス環境が PolarDB クラスターに接続できない

次の手順で問題をトラブルシューティングします:

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

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

    説明

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

  3. ネットワークの問題を確認します。オンプレミス環境で ping <database endpoint> または telnet <database endpoint> <port> を実行して、ネットワーク接続をテストできます。

  4. オンプレミス環境のパブリック IP アドレスまたは IP アドレス範囲がクラスターのホワイトリストに追加されているか確認します。

    オンプレミス環境のパブリック IP アドレスは、次のように取得できます:

    • Linux オペレーティングシステム:ターミナルを開き、curl ifconfig.me コマンドを実行します。

    • Windows オペレーティングシステム:コマンドプロンプトを開き、curl ip.me コマンドを実行します。

    • macOS オペレーティングシステム:ターミナルを開き、curl ifconfig.me コマンドを実行します。

    オンプレミスのネットワーク環境でプロキシサーバーを使用しているか、または同様の構成がある場合、上記の方法で取得した IP アドレスが実際のパブリック IP アドレスではない可能性があります。IP アドレス範囲 0.0.0.0/0PolarDB クラスターのホワイトリストに追加できます。クラスターに正常に接続した後、SHOW PROCESSLIST; コマンドを実行して実際のパブリック IP アドレスを取得し、それをクラスターのホワイトリストに追加します。その後、IP アドレス範囲 0.0.0.0/0 をホワイトリストから削除します。

    image

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

image

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

DMS を使用してクラスターに接続する場合、DMS はデフォルトで [プライマリエンドポイント] を使用してクラスターに接続するため、特定の機能 (In-Memory Column Index (IMCI)PolarDB for AI など) のために、接続方法を [クラスターエンドポイント] を使用して PolarDB クラスターに接続するように変更する必要があります。これにより、データベースプロキシ (Proxy) が SQL 文を対応する機能ノードに自動的にルーティングします。

手順:

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

    image

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

重要

変更が完了したら、元の SQL ウィンドウを閉じて新しい SQL ウィンドウを開いて SQL を実行してください。元の SQL ウィンドウは [プライマリエンドポイント] を使用してクラスターに接続しており、[接続文字列アドレス] を変更したためです。

クラスターエンドポイントの読み取り専用ノードの重みを 0 に設定してからノードを削除すると、接続エラーが発生するのはなぜですか?

  • シナリオ:クラスターエンドポイントから読み取り専用ノードを削除する必要があります。ノードへの接続に影響を与えないように、まず読み取り専用ノードの読み書き分離の重みを 0 に設定します。重みを 0 に設定した後、後続の読み取りリクエストはこの読み取り専用ノードに送信されないと想定します。しかし、クラスターエンドポイントからノードを削除すると、アプリケーション側で接続エラーが発生します。

  • 原因:クラスターエンドポイントには 2 つの [負荷バランスポリシー] があります:[アクティブなリクエストベースのロードバランシング] と [接続数に基づく負荷分散]

    • [アクティブなリクエストベースのロードバランシング]:読み取り専用ノードの重みを 0 に減らした後、後続のリクエストはそのノードにルーティングされなくなります。

    • [接続数に基づく負荷分散]:負荷分散は接続確立フェーズでのみ実行されます。以前に確立された接続が読み取り専用ノードに接続されている場合、その接続上の後続のリクエストは常にその読み取り専用ノードに送信されます。

  • 解決策

    1. クラスターエンドポイントの [負荷バランスポリシー] を [アクティブなリクエストベースのロードバランシング] に切り替えます。

    2. 対象の読み取り専用ノードの読み書き分離の重みを 0 に設定します。

    3. 読み取り専用ノードを削除します。

参考資料