練習 - 部署適用於 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的範例資料庫。 若要取得數據,請使用下列步驟:
使用下列命令下載資料庫檔案:
curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip使用下列命令將資料庫檔案解壓縮:
unzip world-db.zip使用下列命令列出 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 腳本建立應用程式的資料庫,然後確認其詳細數據:
使用下列命令來建立資料庫與資料表:
az mysql flexible-server execute \ --name $MYSQL_SERVER_INSTANCE \ --admin-password azureuser \ --admin-password '$MYSQL_PASSWORD' \ --file-path "./world-db/world.sql"小提示
您也可以使用
mysql從腳本檔案建立資料庫和數據表,但該命令需要很長的時間才能完成。使用下列命令確認伺服器中的資料庫與資料表:
az mysql flexible-server connect \ --name $MYSQL_SERVER_INSTANCE \ --admin-user $MYSQL_USER \ --database-name world \ --interactive當系統提示您時,請輸入您先前擷取的 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在 SQL 提示字元中,使用下列查詢來顯示伺服器上的資料庫:
show databases;下列輸出是典型的:
+--------------------+ | Database | +--------------------+ | flexibleserverdb | | information_schema | | mysql | | newdatabase | | performance_schema | | sys | | world | +--------------------+ 7 rows in set Time: 0.152s使用下列查詢來列出資料庫中的
world資料表:show tables;下列輸出是典型的:
+-----------------+ | Tables_in_world | +-----------------+ | city | | country | | countrylanguage | +-----------------+ 3 rows in set Time: 0.145s
查詢範例資料庫
使用下列步驟來檢視資料庫的內容 world :
使用下列查詢列出所有非洲大陸資訊:
select distinct Continent from country ;下列輸出是典型的:
+---------------+ | Continent | +---------------+ | North America | | Asia | | Africa | | Europe | | South America | | Oceania | | Antarctica | +---------------+使用下列查詢依大陸列出國家/地區名稱和國家/地區代碼:
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)使用下列查詢列出人口大於 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,以及各種配置選項。