演習 - Azure Database for MySQL インスタンスをデプロイする

完了

この演習では、Azure Database for MySQL - フレキシブル サーバー インスタンスを作成し、サンプル データと共に読み込みます。

サンプル アプリケーションとスクリプトを取得する

次のコマンドを使用して、GitHub リポジトリからサンプル アプリケーションとシェル スクリプトを複製します。

git clone https://github.com/MicrosoftDocs/mslearn-jakarta-ee-azure.git

プロジェクトを複製すると、次のファイル構造が生成されます。

├── LICENSE
├── README.md
├── mvnw
├── mvnw.cmd
├── pom.xml
├── setup_mysql.sh
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── microsoft
    │   │           └── azure
    │   │               └── samples
    │   │                   ├── JAXRSConfiguration.java
    │   │                   ├── controllers
    │   │                   │   ├── CityService.java
    │   │                   │   └── CountryService.java
    │   │                   ├── entities
    │   │                   │   ├── City.java
    │   │                   │   └── Country.java
    │   │                   └── rest
    │   │                       └── WorldServiceEndpoint.java
    │   ├── resources
    │   │   └── META-INF
    │   │       └── persistence.xml
    │   └── webapp
    │       └── WEB-INF
    │           ├── beans.xml
    │           ├── createMySQLDataSource.sh
    │           └── web.xml
    └── test
        └── java
            └── com
                └── microsoft
                    └── azure
                        └── samples
                            └── SampleTest.java

Azure にサインインする

Azure にサインインしていない場合は、次のコマンドを使用してサインインします。

az login

既定のインストール場所を設定する

このモジュールで使用されるスクリプトによって実行されるコマンドには、 --location オプションが必要です。 次のコマンドを使用して、このオプションの既定値を指定し、 <location> を適切なリージョンに置き換えます。 このモジュールの後半で Jakarta EE アプリケーションのデプロイに使用するのと同じリージョンを使用する必要があります。

az configure --defaults location=<location>

Azure Database for MySQL - フレキシブル サーバー インスタンスを作成する

mslearn-jakarta-ee-azure ディレクトリに移動し、次のコマンドを使用して Azure Database for MySQL - フレキシブル サーバー インスタンスを作成します。

重要

IPv4 環境では、次のコマンドを使用します。 環境に IPv6 アドレスがある場合、その環境のファイアウォール構成で IPv6 アドレスがまだサポートされていないため、コマンドは失敗します。

スクリプトの実行中にエラーが発生した場合、プロセスは実行中に停止します。 出力メッセージ Granting the User.Read.All, GroupMember.Read.All, and Application.Read.All permissions to the user managed identityで示されているように、スクリプトがアクセス許可を付与している間にエラーが発生する可能性があります。 このエラーを解決するには、 Azure AD administrator 特権を持つユーザーを使用して Azure CLI に再度サインインし、スクリプトを再実行します。

./setup_mysql.sh flexible

一般的な出力には、次の成功と、このモジュールの残りの部分で使用する重要な値が含まれます。

[INFO] -------------------------------------------------------
[INFO] Azure Database for MySQL Setup Completed SUCCESS
[INFO] -------------------------------------------------------

後の手順でこれらの値を使用するため、出力に表示されるキー値は保存しておきます。

環境変数を設定する

キー値を格納するには、次のコマンドを使用します。 <...>プレースホルダーは、前のセクションのスクリプトによって出力された値に置き換えてください。

export RESOURCE_GROUP_NAME=<resource-group>
export MYSQL_SERVER_INSTANCE=<MySQL-host-name>
export MYSQL_USER=<MySQL-admin-user-name>
export MYSQL_PASSWORD=<MySQL-password>

Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明する認証フロー (データベース、キャッシュ、メッセージング、AI サービスなど) には、アプリケーションに対する高度な信頼が必要であり、他のフローには存在しないリスクが伴います。 このフローは、パスワードレス接続やキーレス接続のマネージド ID など、より安全なオプションが実行できない場合にのみ使用します。 ローカル コンピューターの操作では、パスワードレス接続またはキーレス接続にユーザー ID を使用します。

サンプル データベースからデータを取得する

このモジュールでは、公式の MySQL Web サイトから world というサンプル データベースを使用します。 データを取得するには、次の手順を使用します。

  1. 次のコマンドを使用して、データベース ファイルをダウンロードします。

    curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip
    
  2. 次のコマンドを使用して、データベース ファイルを解凍します。

    unzip world-db.zip
    
  3. 次のコマンドを使用して、SQL ファイルを一覧表示します。

    cd world-db
    ls -l world.sql
    

    次の出力が一般的です。

    -rw-r--r--  1 ******  wheel  398635  1  7 12:25 world.sql
    

データベースにサインインする

アクセス トークンではなく、ユーザー名とパスワードのみを使用してデータベースに接続するには、次のコマンドを使用します。

az mysql flexible-server connect \
    --name $MYSQL_SERVER_INSTANCE \
    --user azureuser \
    --interactive

メッセージが表示されたら、前に取得した MySQL パスワードを入力します。

接続後、SQL プロンプトで次のクエリを使用して、使用可能なユーザー名とプラグインを表示できます。

SELECT user, host, plugin FROM mysql.user;

次の出力が一般的です。

+----------------------------------+-----------+-----------------------+
| user                             | host      | plugin                |
+----------------------------------+-----------+-----------------------+
| azureuser                        | %         | mysql_native_password |
| $CURRENT_AZ_LOGIN_USER_NAME#EXT#@| %         | aad_auth              |
| azure_superuser                  | 127.0.0.1 | mysql_native_password |
| azure_superuser                  | localhost | mysql_native_password |
| mysql.infoschema                 | localhost | caching_sha2_password |
| mysql.session                    | localhost | caching_sha2_password |
| mysql.sys                        | localhost | caching_sha2_password |
+----------------------------------+-----------+-----------------------+

アプリケーションのデータベースとテーブルを作成する

world.sql スクリプトからアプリケーションのデータベースを作成し、その詳細を確認するには、次の手順に従います。

  1. 次のコマンドを使用して、データベースとテーブルを作成します。

    az mysql flexible-server execute \
        --name $MYSQL_SERVER_INSTANCE \
        --admin-password azureuser \
        --admin-password '$MYSQL_PASSWORD' \
        --file-path "./world-db/world.sql"
    

    ヒント

    mysqlを使用してスクリプト ファイルからデータベースとテーブルを作成することもできますが、そのコマンドの完了には時間がかかります。

  2. 次のコマンドを使用して、データベースとテーブルがサーバーにあることを確認します。

    az mysql flexible-server connect \
        --name $MYSQL_SERVER_INSTANCE \
        --admin-user $MYSQL_USER \
        --database-name world \
        --interactive
    
  3. メッセージが表示されたら、前に取得した MySQL パスワードを入力します。

    次の出力が一般的です。

    MySQL 8.0.39
    mycli 1.27.2
    Home: http://mycli.net
    Bug tracker: https://github.com/dbcli/mycli/issues
    Thanks to the contributor - Jakub Boukal
    
  4. SQL プロンプトで、次のクエリを使用してサーバー上のデータベースを表示します。

    show databases;
    

    次の出力が一般的です。

    +--------------------+
    | Database           |
    +--------------------+
    | flexibleserverdb   |
    | information_schema |
    | mysql              |
    | newdatabase        |
    | performance_schema |
    | sys                |
    | world              |
    +--------------------+
    
    7 rows in set
    Time: 0.152s
    
  5. 次のクエリを使用して、 world データベース内のテーブルを一覧表示します。

    show tables;
    

    次の出力が一般的です。

    +-----------------+
    | Tables_in_world |
    +-----------------+
    | city            |
    | country         |
    | countrylanguage |
    +-----------------+
    
    3 rows in set
    Time: 0.145s
    

サンプル データベースのクエリを実行する

world データベースの内容を表示するには、次の手順に従います。

  1. 次のクエリを使用して、すべての大陸情報を一覧表示します。

    select distinct Continent from country ;
    

    次の出力が一般的です。

    +---------------+
    | Continent     |
    +---------------+
    | North America |
    | Asia          |
    | Africa        |
    | Europe        |
    | South America |
    | Oceania       |
    | Antarctica    |
    +---------------+
    
  2. 次のクエリを使用して、大陸ごとに国名と国コードを一覧表示します。

    select code,name from country where Continent='Asia';
    

    次の出力が一般的です。

    +------+----------------------+
    | code | Name                 |
    +------+----------------------+
    | AFG  | Afghanistan          |
    | ARE  | United Arab Emirates |
    | ARM  | Armenia              |
    | AZE  | Azerbaijan           |
    | BGD  | Bangladesh           |
    | BHR  | Bahrain              |
    | BRN  | Brunei               |
    | BTN  | Bhutan               |
    | CHN  | China                |
    | CYP  | Cyprus               |
    | GEO  | Georgia              |
    | HKG  | Hong Kong SAR        |
    | IDN  | Indonesia            |
    | IND  | India                |
    | IRN  | Iran                 |
    | IRQ  | Iraq                 |
    | ISR  | Israel               |
    | JOR  | Jordan               |
    | JPN  | Japan                |
    .....
    | VNM  | Vietnam              |
    | YEM  | Yemen                |
    +------+----------------------+
    51 rows in set (0.02 sec)
    
  3. 次のクエリを使用して、人口が 100 万を超えるすべての都市を一覧表示します。

    select * from city where CountryCode='JPN' AND Population > 1000000 ORDER BY Population DESC;
    

    次の出力が一般的です。

    +------+---------------------+-------------+-----------+------------+
    | ID   | Name                | CountryCode | District  | Population |
    +------+---------------------+-------------+-----------+------------+
    | 1532 | Tokyo               | JPN         | Tokyo-to  |    7980230 |
    | 1533 | Jokohama [Yokohama] | JPN         | Kanagawa  |    3339594 |
    | 1534 | Osaka               | JPN         | Osaka     |    2595674 |
    | 1535 | Nagoya              | JPN         | Aichi     |    2154376 |
    | 1536 | Sapporo             | JPN         | Hokkaido  |    1790886 |
    | 1537 | Kioto               | JPN         | Kyoto     |    1461974 |
    | 1538 | Kobe                | JPN         | Hyogo     |    1425139 |
    | 1539 | Fukuoka             | JPN         | Fukuoka   |    1308379 |
    | 1540 | Kawasaki            | JPN         | Kanagawa  |    1217359 |
    | 1541 | Hiroshima           | JPN         | Hiroshima |    1119117 |
    | 1542 | Kitakyushu          | JPN         | Fukuoka   |    1016264 |
    +------+---------------------+-------------+-----------+------------+
    11 rows in set (0.33 sec)
    

ユニットの概要

Azure Database for MySQL - フレキシブル サーバー インスタンスのセットアップと準備が完了しました。 次のユニットでは、JBoss EAP on Azure App Service に Jakarta EE アプリケーションをデプロイするプロセスと、さまざまな構成オプションについて説明します。