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

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

最終更新日:Aug 13, 2026

DMS、MySQL クライアント、コマンドライン、またはアプリケーションコードを使用して PolarDB for MySQL クラスターに接続します。

前提条件

接続する前に、以下のタスクを完了してください。

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

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

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

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

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

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

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

    • 仮想ホストと Simple Application Server は、[プライベートネットワーク] エンドポイントを介して PolarDB に接続できません。

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

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

    説明

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

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

    [PolarDB コンソール]に移動します。[クラスターリスト]で、対象のクラスターの ID をクリックしてクラスター詳細ページに移動します。[設定と管理] > [クラスターホワイトリスト] ページで、IP ホワイトリストまたはセキュリティグループを追加します。

    image

    説明
    • ECS インスタンスを使用して PolarDB for MySQL にアクセスし、ECS インスタンスと PolarDB for MySQL クラスターが同じ VPC にある場合は、ECS インスタンスのプライベート IP アドレスを新しい IP ホワイトリストグループに追加するか、ECS インスタンスのセキュリティグループをクラスターホワイトリストに追加できます。

    • ECS インスタンスを使用して PolarDB for MySQL にアクセスするが、ECS インスタンスと PolarDB for MySQL クラスターが同じ VPC にない場合は、ECS インスタンスのパブリック IP アドレスを新しい IP ホワイトリストグループに追加するか、ECS インスタンスのセキュリティグループをクラスターホワイトリストに追加できます。

    • オンプレミス環境から PolarDB for MySQL にアクセスする場合は、オンプレミス環境のパブリック IP アドレスを新しい IP ホワイトリストグループに追加します。

      パブリック IP アドレスの取得方法:

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

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

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

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

      image

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

前提条件を完了した後、クラスターに接続します。

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

ニーズに合った接続方法を選択してください。

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

DMS は、Alibaba Cloud が提供するグラフィカルなデータ管理サービスです。追加のツールをインストールすることなく、DMS で直接 PolarDB for MySQL クラスターを管理できます。

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

  2. PolarDB for MySQL クラスターの [データベースアカウント][データベースパスワード] を入力し、[ログオン] をクリックします。image

  3. ログイン後、左側のナビゲーションペインの[ログイン中のインスタンス] リストで PolarDB for MySQL クラスターを見つけます。image

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

MySQL 互換のクライアントを使用して PolarDB for MySQL クラスターに接続できます。以下の例では、MySQL Workbench 8.0.29 を使用します。

  1. MySQL Workbench をダウンロードしてインストールします。

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

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

    Connection dialog

    パラメータ

    説明

    [Hostname]

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

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

    [Port]

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

    説明

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

    3306

    [Username]

    データベースアカウント

    polardb_mysql_user

    [Password]

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

    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 for MySQL クラスターの値に置き換えてください。言語別の例:

Java

Maven プロジェクトで MySQL JDBC ドライバーを使用して PolarDB for MySQL クラスターに接続します。

  1. pom.xml ファイルに MySQL JDBC ドライバーの依存関係を追加します。

    <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 for MySQL クラスターのエンドポイント
    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

database/sql パッケージと go-sql-driver/mysql ドライバー (Go 1.23.0) を使用して 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 for MySQL クラスターのエンドポイント
        dbPort := "3306"         // デフォルトのポートは 3306
        dbUser := "<USER>"       // データベースアカウント
        dbPass := "<PASSWORD>"   // データベースアカウントのパスワード
        dbName := "<DATABASE>"   // 接続先のデータベースの名前
    
        // Data Source Name (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("Failed to connect to database: %v", err)
        }
        defer db.Close()
    
        // 接続をテスト
        err = db.Ping()
        if err != nil {
            log.Fatalf("Failed to ping database: %v", err)
        }
    
        // カーソルを作成
        var result string
        err = db.QueryRow("SELECT VERSION()").Scan(&result)
        if err != nil {
            log.Fatalf("Failed to execute query: %v", err)
        }
    
        // データベースバージョンを出力
        fmt.Printf("Connected to database, version: %s\n", result)
    
        // SQL クエリを実行
        rows, err := db.Query("SELECT * FROM `<YOUR_TABLE_NAME>`") // 取得するデータテーブルの名前
        if err != nil {
            log.Fatalf("Failed to execute query: %v", err)
        }
        defer rows.Close()
    }

よくある質問

ECS インスタンスが PolarDB for MySQL クラスターに接続できない

以下の手順でトラブルシューティングを行ってください。

  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 アドレスまたはセキュリティグループが クラスターホワイトリスト に追加されているかどうかを確認してください。

説明

仮想ホストと Simple Application Server は、[プライベートネットワーク] エンドポイントを介して PolarDB に接続できません。

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

以下の手順でトラブルシューティングを行ってください。

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

    image

「Access denied for user 'xxx'@'xxx' (using password: YES)」というエラーで PolarDB for MySQL クラスターに接続できない

データベースアカウントまたはパスワードが正しくありません。[PolarDB コンソール]に移動し、[設定と管理] > [アカウント管理] ページで認証情報を確認またはリセットしてください。

「Unknown MySQL server host 'xxx'」というエラーで PolarDB for MySQL クラスターに接続できない

データベースエンドポイントが正しくありません。 正しいフォーマットは pc-xxxxxx.rwlb.rds.aliyuncs.com です。 [PolarDB コンソール]に移動し、[基本情報] > [データベース接続] セクションでエンドポイントを確認してください。

「Can't connect to MySQL server on 'xxx'」または「Connection timed out」というエラーで PolarDB for MySQL クラスターに接続できない

環境のパブリック IP アドレスまたは IP アドレス範囲が PolarDB for MySQL クラスターホワイトリストに含まれていないか、入力した IP アドレスが正しくない可能性があります。

パブリック IP アドレスの取得方法:

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

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

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

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

image

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

DMS を使用してクラスターに接続する場合、DMS はデフォルトで [プライマリエンドポイント] を介して接続します。インメモリ列指向インデックス (IMCI)PolarDB for AI などの機能を使用するには、PolarDB データベースプロキシが SQL 文を対応する機能ノードにルーティングできるように、[クラスターエンドポイント] に切り替えます。

手順:

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

    image

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

重要

エンドポイントを変更した後、既存の SQL ウィンドウを閉じ、新しいウィンドウを開いてください。元のウィンドウは、更新された [接続文字列アドレス] ではなく、[プライマリエンドポイント] を引き続き使用します。

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

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

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

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

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

  • 解決策

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

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

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

参考情報