Ćwiczenie — wdrażanie wystąpienia usługi Azure Database for MySQL
W tym ćwiczeniu utworzysz instancję Azure Database for MySQL — Serwer Elastyczny i załadujesz ją przy użyciu przykładowych danych.
Pobieranie przykładowej aplikacji i skryptu
Sklonuj przykładową aplikację i skrypt powłoki z repozytorium GitHub, używając poniższego polecenia:
git clone https://github.com/MicrosoftDocs/mslearn-jakarta-ee-azure.git
Klonowanie projektu powoduje utworzenie następującej struktury plików:
├── 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
Zaloguj się na platformie Azure
Jeśli nie zalogowałeś się do Azure, zaloguj się przy użyciu następującego polecenia:
az login
Konfigurowanie domyślnej lokalizacji instalacji
Polecenia wykonywane przez skrypt używany w tym module oczekują opcji --location. Określ wartość domyślną dla tej opcji, używając następującego polecenia, zastępując <location> element odpowiednim regionem. W dalszej części tego modułu należy użyć tego samego regionu, którego używasz do wdrażania aplikacji Jakarta EE.
az configure --defaults location=<location>
Utwórz instancję elastycznego serwera w usłudze Azure Database dla MySQL
Przejdź do katalogu mslearn-jakarta-ee-azure, a następnie użyj następującego polecenia, aby utworzyć instancję Azure Database for MySQL - Flexible Server:
Ważny
Użyj następującego polecenia w środowisku IPv4. Jeśli środowisko ma adres IPv6, polecenie zakończy się niepowodzeniem, ponieważ konfiguracja zapory dla niego nie obsługuje jeszcze adresów IPv6.
Jeśli podczas wykonywania skryptu wystąpi błąd, proces zatrzymuje się w trakcie wykonywania. Błąd może wystąpić, gdy skrypt udziela uprawnień, zgodnie z komunikatem Granting the User.Read.All, GroupMember.Read.All, and Application.Read.All permissions to the user managed identitywyjściowym . Aby rozwiązać ten błąd, zaloguj się ponownie do interfejsu wiersza polecenia platformy Azure przy użyciu użytkownika z Azure AD administrator uprawnieniami, a następnie uruchom ponownie skrypt.
./setup_mysql.sh flexible
Typowe dane wyjściowe obejmują następujący sukces, a także niektóre ważne wartości, które są używane w pozostałej części tego modułu:
[INFO] -------------------------------------------------------
[INFO] Azure Database for MySQL Setup Completed SUCCESS
[INFO] -------------------------------------------------------
Zapisz wartości kluczy, które są wyświetlane w danych wyjściowych, ponieważ te wartości są używane w kolejnych krokach.
Konfgurowanie zmiennych środowiskowych
Użyj następujących poleceń, aby przechowywać wartości kluczy. Pamiętaj, aby zastąpić <...> symbole zastępcze wartościami wyjściowymi skryptu w poprzedniej sekcji.
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>
Notatka
Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze, taki jak bazy danych, pamięci podręczne, komunikaty lub usługi sztucznej inteligencji, wymaga wysokiego stopnia zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Użyj tego przepływu tylko wtedy, gdy bardziej bezpieczne opcje, takie jak tożsamości zarządzane dla połączeń bez hasła lub bez kluczy, nie są opłacalne. W przypadku operacji maszyny lokalnej preferuj tożsamości użytkowników dla połączeń bez hasła lub bez klucza.
Pobieranie danych z przykładowej bazy danych
W tym module użyjesz przykładowej bazy danych o nazwie world z oficjalnej witryny internetowej MySQL. Aby pobrać dane, wykonaj następujące kroki:
Pobierz plik bazy danych przy użyciu następującego polecenia:
curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zipRozpakuj plik bazy danych przy użyciu następującego polecenia:
unzip world-db.zipWyświetl plik SQL przy użyciu następujących poleceń:
cd world-db ls -l world.sqlNastępujące dane wyjściowe są typowe:
-rw-r--r-- 1 ****** wheel 398635 1 7 12:25 world.sql
Zaloguj się do bazy danych
Użyj następującego polecenia, aby nawiązać połączenie z bazą danych przy użyciu tylko nazwy użytkownika i hasła zamiast tokenu dostępu:
az mysql flexible-server connect \
--name $MYSQL_SERVER_INSTANCE \
--user azureuser \
--interactive
Po wyświetleniu monitu przez system wprowadź pobrane wcześniej hasło MySQL.
Po nawiązaniu połączenia możesz użyć następującego zapytania w wierszu polecenia SQL, aby wyświetlić dostępne nazwy użytkowników i wtyczki:
SELECT user, host, plugin FROM mysql.user;
Następujące dane wyjściowe są typowe:
+----------------------------------+-----------+-----------------------+
| 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 |
+----------------------------------+-----------+-----------------------+
Tworzenie bazy danych i tabel dla aplikacji
Wykonaj następujące kroki, aby utworzyć bazę danych dla aplikacji na podstawie skryptu world.sql , a następnie zweryfikować jego szczegóły:
Użyj następującego polecenia, aby utworzyć bazę danych i tabele:
az mysql flexible-server execute \ --name $MYSQL_SERVER_INSTANCE \ --admin-password azureuser \ --admin-password '$MYSQL_PASSWORD' \ --file-path "./world-db/world.sql"Wskazówka
Można również użyć
mysqlpolecenia , aby utworzyć bazę danych i tabele na podstawie pliku skryptu, ale wykonanie tego polecenia zajmuje dużo czasu.Upewnij się, że bazy danych i tabele znajdują się na serwerze, używając następującego polecenia:
az mysql flexible-server connect \ --name $MYSQL_SERVER_INSTANCE \ --admin-user $MYSQL_USER \ --database-name world \ --interactivePo wyświetleniu monitu przez system wprowadź pobrane wcześniej hasło MySQL.
Następujące dane wyjściowe są typowe:
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 BoukalW wierszu polecenia SQL użyj następującego zapytania, aby wyświetlić bazy danych na serwerze:
show databases;Następujące dane wyjściowe są typowe:
+--------------------+ | Database | +--------------------+ | flexibleserverdb | | information_schema | | mysql | | newdatabase | | performance_schema | | sys | | world | +--------------------+ 7 rows in set Time: 0.152sUżyj następującego zapytania, aby wyświetlić listę tabel w
worldbazie danych:show tables;Następujące dane wyjściowe są typowe:
+-----------------+ | Tables_in_world | +-----------------+ | city | | country | | countrylanguage | +-----------------+ 3 rows in set Time: 0.145s
Wykonywanie zapytań względem przykładowej bazy danych
Aby wyświetlić zawartość world bazy danych, wykonaj następujące czynności:
Wyświetl listę wszystkich informacji o kontynencie przy użyciu następującego zapytania:
select distinct Continent from country ;Następujące dane wyjściowe są typowe:
+---------------+ | Continent | +---------------+ | North America | | Asia | | Africa | | Europe | | South America | | Oceania | | Antarctica | +---------------+Wyświetl listę nazw krajów i kodów krajów według kontynentu przy użyciu następującego zapytania:
select code,name from country where Continent='Asia';Następujące dane wyjściowe są typowe:
+------+----------------------+ | 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)Wyświetl listę wszystkich miast, które mają populację większą niż 1 milion, używając następującego zapytania:
select * from city where CountryCode='JPN' AND Population > 1000000 ORDER BY Population DESC;Następujące dane wyjściowe są typowe:
+------+---------------------+-------------+-----------+------------+ | 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)
Podsumowanie lekcji
Ukończono konfigurację i przygotowanie wystąpienia usługi Azure Database for MySQL — serwer elastyczny. W następnej lekcji przedstawiono proces wdrażania aplikacji Jakarta EE w aplikacji JBoss EAP w usłudze Azure App Service wraz z różnymi opcjami konfiguracji.