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

AnalyticDB:Node.js

最終更新日:Mar 29, 2026

Node.js 向けの mysql ドライバーパッケージを使用して、AnalyticDB for MySQL クラスターに接続します。

前提条件

作業を開始する前に、以下の要件を満たしていることを確認してください。

  • Node.js がインストールされていること。インストールは nodejs.org から行えます。

  • mysql ドライバーパッケージがインストールされていること。次のコマンドを実行してインストールします。

    npm install mysql --save
  • ご利用の Node.js ホストの IP アドレスが、クラスターのホワイトリストに追加されていること。「ホワイトリストの設定」をご参照ください。

  • クラスターエンドポイントを取得済みであること。AnalyticDB for MySQL コンソールの クラスター情報 ページから取得できます。

    • ご利用の Node.js ホスト(例:Elastic Compute Service (ECS) インスタンス)がクラスターと同じ VPC 内にある場合は、内部エンドポイントを使用します。

    • それ以外の場合は、パブリックエンドポイントを申請してください。「パブリックエンドポイントの申請またはリリース」をご参照ください。

AnalyticDB for MySQL クラスターへの接続

認証情報をソースコード内にハードコードせず、環境変数として保存してください。

サンプルコードを実行する前に、以下の環境変数を設定します。

変数説明
ADB_HOSTクラスターエンドポイントam-bp***.ads.aliyuncs.com
ADB_PORTポート番号3306
ADB_USERアカウント名(特権または標準)account_name
ADB_PASSWORDアカウントパスワードaccount_password
ADB_DATABASEデータベース名db_name

次のサンプルコードは、クラスターに接続し、クエリを実行してから接続を閉じます。

// ステップ 1: mysql ドライバーをインポートします。
const mysql = require('mysql');

// ステップ 2: 環境変数から認証情報を使用して接続を作成します。
const connection = mysql.createConnection({
  host: process.env.ADB_HOST,
  port: parseInt(process.env.ADB_PORT, 10) || 3306,
  user: process.env.ADB_USER,
  password: process.env.ADB_PASSWORD,
  database: process.env.ADB_DATABASE,
  // 接続確立時のタイムアウト値。デフォルト: 10000 ms。
  connectTimeout: 10000,
});

// ステップ 3: 接続を開きます。
connection.connect((err) => {
  if (err) throw err;
  console.log('Connection established.');

  // ステップ 4: クエリを実行します。
  connection.query(
    'SELECT count(*) AS count FROM information_schema.tables',
    (err, results) => {
      if (err) throw err;
      console.log('Count:', results[0].count);

      // ステップ 5: 接続を閉じます。
      connection.end((err) => {
        if (err) throw err;
        console.log('Connection closed.');
      });
    }
  );
});

コードが正常に実行されると、次のような出力が表示されます。

Connection established.
Count: 42
Connection closed.

注意事項

  • 本番環境では接続プールを使用してください。 各リクエストごとに新しい接続を作成すると遅延が発生します。mysql.createPool() を使用して、再利用可能な接続のプールを管理してください。詳細については、mysql ドキュメントをご参照ください。

  • SQL インジェクションを防ぐためにパラメーター化クエリを使用してください。 mysql パッケージは、クライアント側でクエリの値をエスケープ処理します。ユーザー入力値を SQL 文字列に直接埋め込むのではなく、パラメーターとして渡してください。例については、「クエリ値のエスケープ」をご参照ください。

次のステップ