Axios と CData Connect AI で MySQL に接続した Web アプリを構築
Axios は開発者が Web ブラウザや Node.js からサーバーに HTTP リクエストを送信できる JavaScript ライブラリです。CData Connect AI と組み合わせることで、Web アプリからライブMySQL のデータにアクセスできます。この記事では、MySQL に接続し、Axios でライブMySQL のデータにアクセスできる Web アプリを構築する方法を説明します。
Axios から MySQL に接続
Axios で MySQL を操作するには、Connect AI から MySQL に接続し、ユーザーにアクセス権を提供し、MySQL のデータ 用のワークスペースを作成する必要があります。
Connect AI から MySQL に接続
CData Connect AI はシンプルなポイントアンドクリックインターフェースでデータソースに接続できます。
- Connect AI にログインして「Sources」をクリック、次に「 Add Connection」をクリック
- 接続を追加パネルから「MySQL」を選択
-
MySQL に接続するために必要な認証プロパティを入力します。
Server およびPort プロパティがMySQL への接続には必須です。IntegratedSecurity をFALSE に設定した場合、User、Password も必須になります。 オプションで、Database を設定することもできます。Database は設定がない場合すべてのデータベースを使えるようになります。
パスワード方式によるSSH 接続
パスワード方式によるSSH接続時に必要なプロパティ一覧を以下に示します。
- User: MySQL のユーザ
- Password: MySQL のパスワード
- Database: MySQL の接続先データベース
- Server: MySQL のサーバー
- Port: MySQL のポート
- UserSSH: "true"
- SSHAuthMode: "Password"
- SSHPort: SSH のポート
- SSHServer: SSH サーバー
- SSHUser: SSH ユーザー
- SSHPassword: SSH パスワード
接続文字列形式では以下のようになります。
User=admin;Password=adminpassword;Database=test;Server=mysql-server;Port=3306;UseSSH=true;SSHAuthMode=Password;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHPassword=sshpasswd;
公開鍵認証方式方式によるSSH 接続
公開鍵認証によるSSH接続時に必要なプロパティ一覧を以下に示します。
- User: MySQL のユーザ
- Password: MySQL のパスワード
- Database: MySQL の接続先データベース
- Server: MySQL のサーバー
- Port: MySQL のポート
- UserSSH: "true"
- SSHAuthMode: "Public_Key"
- SSHClientCertType: キーストアの種類
- SSHPort: SSH のポート
- SSHServer: SSH サーバー
- SSHUser: SSH ユーザー
- SSHClientCert: 秘密鍵ファイルのパス
接続文字列形式では以下のようになります。
User=admin;Password=adminpassword;Database=test;Server=mysql-server;Port=3306;UseSSH=true;SSHAuthMode=Public_Key;SSHClientCertType=PUBLIC_KEY_FILE;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHClientCert=C:\Keys\key.pem;
- 「Save & Test」をクリック
-
MySQL 接続の追加ページで「Permissions」タブに移動し、ユーザーベースのアクセス許可を設定します。
Personal Access Token の作成
REST API、OData API、または Virtual SQL Server を介して Connect AI に接続する場合、Personal Access Token(PAT)を使用して Connect AI への接続を認証します。アクセスの粒度を維持するために、サービスごとに個別の PAT を作成することをお勧めします。
- Connect AI アプリの右上にある歯車アイコン()をクリックして設定ページを開きます。
- 設定ページで「Access Tokens」セクションに移動し、「 Create PAT」をクリックします。
-
PAT に名前を付けて「Create」をクリックします。
- Personal Access Token は作成時にのみ表示されるため、必ずコピーして安全な場所に保存してください。
Axios 用に MySQL エンドポイントを設定
MySQL に接続したら、目的のテーブル用のワークスペースを作成します。
-
「Workspaces」ページに移動し、「 Add」をクリックして新しいワークスペースを作成します(または既存のワークスペースを選択)。
- 「 Add」をクリックしてワークスペースに新しいアセットを追加します。
-
MySQL 接続(例: MySQL1)を選択して「Next」をクリックします。
-
操作するテーブルを選択して「Confirm」をクリックします。
- ワークスペースの OData サービス URL をメモしておきます(例: https://cloud.cdata.com/api/odata/{workspace_name})。
接続、PAT、ワークスペースが設定できたので、Axios からMySQL のデータに接続する準備が整いました。
Axios ワークフローで MySQL のデータに接続
OData プロトコルを使用して Axios から CData Connect AI への接続を確立するには、以下のステップに従います。
- Web アプリ用のプロジェクトディレクトリを作成します(例: ~/connect_cloud/)
- ターミナルを開き、プロジェクトディレクトリに移動して以下のコマンドで node プロジェクトを初期化します:
npm init -y
- 以下のコマンドでプロジェクトに Axios 依存関係をインストールします:
npm install axios
プロジェクトディレクトリに以下のコードを含む server.js ファイルを作成します。CData Connect AI のユーザー名(例: [email protected])と PAT(前提条件で作成した PAT)を指定します。また、SELECT * FROM MySQL1.SCHEMA.Orders のようなデータクエリも指定する必要があります。
server.js コード
const axios = require('axios') const user = '[email protected]' const pat = '***********************************'; //API エンドポイント const url = 'https://cloud.cdata.com/api/odata/{workspace_name}'; //POST リクエストで送信するデータ const data = { "query":"SELECT * FROM {workspace_name}.SCHEMA.Orders" }; axios.post(url, data, { auth: { username: user, password: pat } }) .then(response => { const rows = response.data.results[0].rows; const schema = response.data.results[0].schema; //カラム名の配列を作成 const columnNames = schema.map(col => col.columnName); //各行をループして、カラム名と値をログ出力 rows.forEach(row => { const rowObject = {}; row.forEach((value, index) => { const columnName = columnNames[index]; rowObject[columnName] = value; }); console.log(rowObject); }) }) .catch(error => { console.error('Error:', error); });- ターミナルで以下のコマンドを実行してサーバーを起動します:
node server.js
クエリ結果が表示されます:{ ID: 1, VALUE: -2 } { ID: 2, VALUE: 1 } { ID: 11, VALUE: null } { ID: 3, VALUE: 2 } { ID: 4, VALUE: 5 } ...
クラウドアプリケーションから MySQL のデータへの簡易アクセス
これで、Axios からライブMySQL のデータへの直接接続が確立されました。Axios のようなクラウドアプリケーションから 100 以上の SaaS、ビッグデータ、NoSQL ソースへの簡易アクセスについての詳細は、Connect AI ページを参照してください。