練習 - 部署適用於 MySQL 的 Azure 資料庫實例

已完成

在此練習中,您會建立適用於 MySQL 的 Azure 資料庫 - 彈性伺服器實例,並使用範例數據加以載入。

取得範例應用程式和腳本

使用下列命令,從 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>

建立適用於 MySQL 的 Azure 資料庫 - 彈性伺服器實例

流覽至 mslearn-jakarta-ee-azure 目錄,然後使用下列命令來建立適用於 MySQL 的 Azure 資料庫 - 彈性伺服器實例:

這很重要

在 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 服務,需要對應用程式有高度信任,並且具有其他流程所不具有的風險。 只有在無法使用更安全的選項,例如適用於無密碼或無密鑰連線的受控身份時,才使用此流程。 針對本機計算機作業,偏好使用無密碼或無密鑰連線的使用者身分識別。

從範例資料庫取得數據

在本課程模組中,您會使用從官方 MySQL 網站提供的名為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)
    

單元摘要

您已完成適用於 MySQL 的 Azure 資料庫 - 彈性伺服器實例的設定和準備。 下一個單元將介紹如何將 Jakarta EE 應用程式部署至 Azure App Service 上的 JBoss EAP,以及各種配置選項。