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

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

最終更新日:Apr 25, 2025

PolarDB-X は、データ管理 (DMS)、MySQL コマンドライン、サードパーティクライアント、および公式の MySQL 相互作用プロトコルに準拠したサードパーティプログラムコードを介した接続をサポートしています。

準備

PolarDB-X データベースに接続する前に、次の操作を実行する必要があります。

  • データベースの接続アドレスとポートを取得する

    PolarDB 分散版コンソール に移動し、[インスタンス一覧] のターゲット インスタンス ID をクリックして、インスタンスの基本情報ページに移動します。[接続情報] 領域で、データベースの接続アドレスとポートを取得します。

    image

    説明
    • アクセス環境に基づいて、[イントラネット] または [インターネット] を選択します。

      • ECS を使用して PolarDB-X にアクセスする場合、ECS と PolarDB-X が同じ VPC 内にある場合は、[プライベートネットワーク] を選択して PolarDB-X の最高のパフォーマンスを実現します。

      • ローカル環境から PolarDB-X にアクセスする場合は、[パブリックネットワーク] を選択します。パブリックネットワークアドレスの右側にある [パブリックネットワークアドレスをリクエスト] をクリックします。[パブリックネットワーク] はインターネットであり、[パブリックネットワーク] を介してアクセスしても、PolarDB-X インスタンスの最高のパフォーマンスは実現しません。

    • 現在、仮想ホストと軽量サーバーを使用して [プライベートネットワーク] アドレスを使用して PolarDB-X インスタンスに接続することはサポートされていません。

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

  • インスタンスのホワイトリストを設定する

    PolarDB 分散版コンソール に移動し、[インスタンス一覧] のターゲット インスタンス ID をクリックして、インスタンスの製品ページに移動します。[構成と管理] > [セキュリティ管理] で、IP ホワイトリストを [構成] するか、[新しいホワイトリストグループを追加] します。具体的な操作については、「ホワイトリストを設定する」をご参照ください。

    image

    説明
    • ECS を使用して PolarDB-X にアクセスする場合、ECS と PolarDB-X が同じ VPC 内にある場合は、この手順は無視してください。システムは、ECS が配置されている VPC CIDR ブロックをデフォルトグループに追加しています。

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

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

      ローカル環境のパブリック IP アドレスを取得する方法は次のとおりです。

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

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

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

      ローカルネットワーク環境にプロキシなどの状況がある場合、上記の方法で取得した IP は実際のパブリック IP ではない可能性があります。IP セグメント 0.0.0.0/0PolarDB-X インスタンスのホワイトリストに追加できます。インスタンスに正常に接続した後、SHOW PROCESSLIST; コマンドを実行して実際のパブリック IP アドレスを取得し、インスタンスのホワイトリストに追加します。次に、IP セグメント 0.0.0.0/0 をホワイトリストから削除します。

      image

    • IP セグメント 0.0.0.0/0 は、すべてのアクセスソースがインスタンスにアクセスできるようにすることを意味します。インスタンスのホワイトリストに設定すると、大きなリスクが生じます。必要な場合を除き、ホワイトリストに追加しないでください。

データベースに接続する

データベースインスタンスに接続する方法はたくさんあります。実際のビジネスニーズに基づいて適切な接続方法を選択できます。データベースインスタンスに接続する例を次に示します。

DMS を使用してデータベースに接続する

DMS は、Alibaba Cloud が提供するグラフィカルデータ管理ツールです。データ管理、構造管理、ユーザー権限付与、セキュリティ監査、データトレンド、データ追跡、BI チャート、パフォーマンスと最適化、およびサーバー管理を統合したデータ管理サービスです。他のツールを使用せずに、DMS で PolarDB-X インスタンスを直接管理できます。

  1. PolarDB 分散版コンソール に移動し、[インスタンス一覧] のターゲット インスタンス ID をクリックして、インスタンスの製品ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。

    image

  2. ポップアップ ダイアログボックスで、PolarDB-X インスタンスで作成した [データベースアカウント][データベースパスワード] を入力し、[ログイン] をクリックします。

    image

    説明
    • DMS を介して初めてログインする場合、制御モードはデフォルトで [柔軟な管理] になります。ログインに成功した後、インスタンス編集機能を使用して制御モードを変更することもできます。詳細については、「インスタンス情報を編集する」および「制御モード」をご参照ください。

    • ログインパラメータを構成した後、左下隅にある [接続テスト] をクリックできます。接続テストが失敗した場合は、エラープロンプトに従って入力したインスタンス情報 (アカウントまたはパスワードが正しいかどうかなど) を確認してください。

    • システムは、DMS のサーバーアクセスアドレスをクラウドデータベースのホワイトリストに自動的に追加しようとします。自動追加が失敗した場合は、手動で追加してください。

  3. ログイン後、左側のナビゲーションウィンドウの [ログイン済みインスタンス] セクション内でログインしている PolarDB-X インスタンスを表示し、必要な管理操作を実行できます。

    image

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

PolarDB-X は、次のサードパーティクライアントを介した接続をサポートしています。対応する公式 Web サイトからクライアントをダウンロードできます。

  • MySQL Workbench (推奨)

  • SQLyog

  • Sequel Pro

  • Navicat for MySQL

説明

サードパーティの GUI クライアントは、データの追加、削除、変更、クエリ、DDL 操作などの基本的なデータベース操作を実行できます。ツールの高度な機能については、PolarDB-X はそれらをサポートしていない可能性があります。

以下では、MySQL Workbench バージョン 8.0.29 を例として使用します。他のクライアントの操作も同様です。

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

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

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

    连接界面

    パラメータ

    説明

    ホスト名

    データベース接続アドレス

    pxc-xxx.polarx.rds.aliyuncs.com

    ポート

    データベース接続アドレスのポート番号。データベース接続アドレスに対応します。

    説明

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

    3306

    ユーザー名

    データベースアカウント

    polardb_x_user

    パスワード

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

    Pass***233

MySQL コマンドラインを使用してデータベースに接続する

サーバーに MySQL クライアントがインストールされている場合は、コマンドラインを介して PolarDB-X インスタンスに接続できます。

構文:

mysql -h<connection address> -P<port> -u<database username> -p<database user password> -D<database name>

例:

mysql -hpxc-xxx.polarx.rds.aliyuncs.com -P3306 -upolardb_mysql_user -pPass***233 -Dtest_db

パラメータ

説明

-h

データベース接続アドレス

pxc-xxx.polarx.rds.aliyuncs.com

-P

データベース接続アドレスのポート番号。データベース接続アドレスに対応します。

説明
  • デフォルトポートは 3306 です。

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

3306

-u

データベースアカウント

polardb_x_user

-p

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

説明

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

  • このパラメータが入力されていない場合は、Enter password の後にパスワードを再入力するように求められます。

  • このパラメータが入力されている場合は、-p とデータベースパスワードの間にスペースを入れてはいけません。

Pass***233

-D

ログインするデータベースの名前。

説明

このパラメータは必須ではありません。

test_db

アプリケーションを使用してデータベースに接続する

PolarDB-X インスタンスに接続する方法は、他の MySQL データベースに接続する方法と同じです。データベースの接続アドレス、ポート、アカウント、およびパスワードを置き換えるだけです。以下に、いくつかの開発言語でアプリケーションを介して PolarDB データベースにアクセスする方法を示します。

Java

この例では、Maven プロジェクトを使用して、MySQL JDBC ドライバーを使用して PolarDB-X インスタンスに接続します。

  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) {
          // PolarDB インスタンスの接続アドレス、ポート、および接続するデータベース名
          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

この例では、Python3 を使用して、PyMySQL ライブラリを使用して PolarDB-X インスタンスに接続します。

  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

この例では、go1.23.0 を使用して、database/sql パッケージと go-sql-driver/mysql ドライバーを使用して PolarDB-X インスタンスに接続します。

  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()
    
        // クエリ結果を処理する
        for rows.Next() {
            var id int
            var name string
            if err := rows.Scan(&id, &name); err != nil {
                log.Fatalf("行のスキャンに失敗しました: %v", err)
            }
            fmt.Printf("ID: %d, Name: %s\n", id, name)
        }
    
        // エラーを確認する
        if err := rows.Err(); err != nil {
            log.Fatalf("反復中にエラーが発生しました: %v", err)
        }
    }
    

FAQ

ECS が PolarDB-X インスタンスに接続できない

次の手順に従ってトラブルシューティングを行ってください。

  1. PolarDB-X インスタンスの実行ステータスが [実行中] であることを確認します。

  2. データベース接続アドレス、ポートアカウント、およびパスワード が正しいことを確認します。

  3. ネットワーク要因を確認します。ECS で ping データベース接続アドレス または telnet データベース接続アドレス ポート を実行して、ネットワーク接続をテストできます。

  4. [プライベートネットワーク] アドレスを使用している場合:

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

      • ECS が配置されている VPC を切り替えます。

      • PolarDB-X インスタンスがデフォルト VPC を使用している場合は、PolarDB-X インスタンスが配置されている VPC を切り替えることができます。

      • クラウドエンタープライズネットワークを使用して、VPC 間の相互接続を実現します。詳細については、「同じリージョン内の VPC 間の相互接続」をご参照ください。

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

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

説明

現在、仮想ホストと軽量サーバーを使用して [プライベートネットワーク] アドレスを使用して PolarDB-X インスタンスに接続することはサポートされていません。

ローカル環境が PolarDB-X インスタンスに接続できない

次の手順に従ってトラブルシューティングを行ってください。

  1. PolarDB-X インスタンスが [実行中] ステータスであることを確認します。

  2. データベース接続アドレス、ポートアカウント、およびパスワード が正しいことを確認します。

    説明

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

  3. ネットワーク要因を確認します。ローカル環境で ping <データベース接続アドレス> または telnet <データベース接続アドレス> <ポート> を実行して、ネットワーク接続をテストできます。

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

    ローカル環境のパブリック IP アドレスを取得する方法は次のとおりです。

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

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

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

    ローカルネットワーク環境にプロキシなどの状況がある場合、上記の方法で取得した IP は実際のパブリック IP ではない可能性があります。IP セグメント 0.0.0.0/0PolarDB-X インスタンスのホワイトリストに追加できます。インスタンスに正常に接続した後、SHOW PROCESSLIST; コマンドを実行して実際のパブリック IP アドレスを取得し、インスタンスのホワイトリストに追加します。次に、IP セグメント 0.0.0.0/0 をホワイトリストから削除します。

    image

接続できませんPolarDB-Xインスタンス、エラー: ユーザー 'xxx'@'xxx' のアクセスが拒否されました (パスワードを使用: YES)

データベースアカウントまたはパスワードが正しくありません。正しく入力したかどうかを確認してください。PolarDB 分散版コンソール に移動し、[構成と管理] > [アカウント管理]データベースアカウントとパスワードを管理 します。

接続できませんPolarDB-Xインスタンス、エラー: 不明な MySQL サーバー ホスト 'xxx'

データベース接続アドレスが正しくありません。正しく入力したかどうかを確認してください。正しい形式は pxc-xxx.polarx.rds.aliyuncs.com です。PolarDB 分散版コンソール に移動し、[基本情報] > [接続情報] でデータベース接続アドレスを管理します。

接続できません Can't connect to MySQL server on 'xxx' or Connection timed outPolarDB-X インスタンス、エラー:

現在の環境のパブリック IP アドレスまたは IP セグメントが PolarDB-X インスタンスのホワイトリストに追加されていないか、入力したパブリック IP アドレスまたは IP セグメントにエラーがある可能性があります。

ローカル環境のパブリック IP アドレスを取得する方法は次のとおりです。

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

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

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

ローカルネットワーク環境にプロキシなどの状況がある場合、上記の方法で取得した IP は実際のパブリック IP ではない可能性があります。IP セグメント 0.0.0.0/0PolarDB-X インスタンスのホワイトリストに追加できます。インスタンスに正常に接続した後、SHOW PROCESSLIST; コマンドを実行して実際のパブリック IP アドレスを取得し、インスタンスのホワイトリストに追加します。次に、IP セグメント 0.0.0.0/0 をホワイトリストから削除します。

image

データベースタイムアウト設定の推奨プラクティス

アプリケーションが一般的な ORM フレームワーク (SpringBoot+MyBatis+JDBC Driver など) を使用してデータベースにアクセスする場合、これらの ORM フレームワークは通常、トランザクション、SQL 文、パケット転送などの複数のディメンションからの SQL クエリのクライアント側タイムアウトの設定をサポートしています。たとえば、Spring の transaction_timeout、MyBatis の statement_timeout、JDBC MySQL Driver の query_timeout などです。

基本的に、これらのクライアント側タイムアウトメカニズムのほとんどは、Kill 文を実行してクエリを中断する必要があります。分散データベースシナリオでは、Kill 文の実行コストは比較的高く、頻繁に実行するとデータベースシステムのリソースが比較的多く消費されます。したがって、上記のタイムアウトメカニズムを使用してデータベースに広範囲に接続することはお勧めしません。

ベストプラクティスから、アプリケーションは JDBC URL の socket_timeout パラメータ (ネットワークソケットタイムアウトパラメータ) を使用して SQL 実行タイムアウトを直接指定する必要があります。これは、このパラメータが TCP プロトコル自体のタイムアウトメカニズムに依存しており、タイムアウトがトリガーされたときに Kill 文の動作が発生しないためです。例は次のとおりです。

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
  <property name="url" value="jdbc:mysql://pxc-*****.public.polarx.rds.aliyuncs.com:3306/doc_test?socketTimeout=60000" />
  ...
  <property name="asyncInit" value="true" />
</bean>