Упражнение. Развертывание экземпляра Базы данных Azure для MySQL
В этом упражнении вы создадите экземпляр гибкого сервера Базы данных Azure для 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 для MySQL
Перейдите в каталог mslearn-jakarta-ee-azure , а затем используйте следующую команду, чтобы создать экземпляр гибкого сервера базы данных Azure для MySQL:
Важный
Используйте следующую команду в среде IPv4. Если в вашей среде есть IPv6-адрес, команда завершится ошибкой, так как конфигурация брандмауэра для нее еще не поддерживает IPv6-адреса.
Если во время выполнения скрипта возникает ошибка, процесс останавливается в середине выполнения. При предоставлении скриптом разрешений может возникнуть ошибка, как указано в выходном сообщении Granting the User.Read.All, GroupMember.Read.All, and Application.Read.All permissions to the user managed identity
. Чтобы устранить эту ошибку, снова войдите в Azure CLI с помощью пользователя, имеющего Azure AD administrator
привилегии, а затем повторно запустите скрипт.
./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>
Заметка
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, такие как управляемые удостоверения для подключений без пароля или без ключа, недоступны. Для локальных операций на компьютере предпочтительнее использовать учетные данные пользователей для подключения без пароля или ключа.
Получение данных из примера базы данных
В этом модуле вы используете пример базы данных под названием world
с официального веб-сайта MySQL. Чтобы получить данные, выполните следующие действия.
Скачайте файл базы данных с помощью следующей команды:
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)
Список всех городов с населением более 1 миллиона с помощью следующего запроса:
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. В следующем уроке представлен процесс развертывания приложения Jakarta EE в JBoss EAP в Службе приложений Azure, а также различные параметры конфигурации.