Übung – Bereitstellen einer Azure-Datenbank für MySQL-Instanz
In dieser Übung erstellen Sie Ihre Azure-Datenbank für MySQL – flexible Serverinstanz und laden sie mit Beispieldaten.
Abrufen der Beispielanwendung und des Beispielskripts
Klonen Sie das Beispielanwendungs- und Shellskript aus dem GitHub-Repository mithilfe des folgenden Befehls:
git clone https://github.com/MicrosoftDocs/mslearn-jakarta-ee-azure.git
Durch das Klonen des Projekts wird die folgende Dateistruktur erzeugt:
├── 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
Anmelden bei Azure
Wenn Sie sich nicht bei Azure angemeldet haben, melden Sie sich mit dem folgenden Befehl an:
az login
Einrichten eines Standardinstallationsstandorts
Die befehle, die vom in diesem Modul verwendeten Skript ausgeführt werden, erwarten eine --location
Option. Geben Sie einen Standardwert für diese Option an, indem Sie den folgenden Befehl verwenden und <location>
durch einen geeigneten Bereich ersetzen. Sie sollten dieselbe Region verwenden, die Sie für die Bereitstellung Ihrer Jakarta EE-Anwendung später in diesem Modul verwenden.
az configure --defaults location=<location>
Erstellen einer Azure-Datenbank für MySQL – Flexible Serverinstanz
Navigieren Sie zum Verzeichnis "mslearn-jakarta-ee-azure ", und verwenden Sie dann den folgenden Befehl, um Ihre Azure-Datenbank für MySQL - flexible Serverinstanz zu erstellen:
Von Bedeutung
Verwenden Sie den folgenden Befehl in einer IPv4-Umgebung. Wenn Ihre Umgebung über eine IPv6-Adresse verfügt, schlägt der Befehl fehl, da die Firewallkonfiguration für sie noch keine IPv6-Adressen unterstützt.
Wenn während der Ausführung des Skripts ein Fehler auftritt, wird der Prozess in der Mitte der Ausführung beendet. Möglicherweise tritt ein Fehler auf, während das Skript Berechtigungen gewährt, wie in der Ausgabemeldung Granting the User.Read.All, GroupMember.Read.All, and Application.Read.All permissions to the user managed identity
angegeben. Um diesen Fehler zu beheben, melden Sie sich erneut mit einem Benutzer Azure AD administrator
mit Berechtigungen bei der Azure CLI an, und führen Sie dann das Skript erneut aus.
./setup_mysql.sh flexible
Die typische Ausgabe enthält den folgenden Erfolg sowie einige wichtige Werte, die Sie im restlichen Modul verwenden:
[INFO] -------------------------------------------------------
[INFO] Azure Database for MySQL Setup Completed SUCCESS
[INFO] -------------------------------------------------------
Behalten Sie die Schlüsselwerten, die in der Ausgabe angezeigt werden, da Sie diese Werte in späteren Schritten verwenden.
Umgebungsvariablen einrichten
Verwenden Sie die folgenden Befehle, um die Schlüsselwerte zu speichern. Ersetzen Sie die <...>
Platzhalter unbedingt durch die Werte, die vom Skript im vorherigen Abschnitt ausgegeben werden.
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>
Hinweis
Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden, der verfügbar ist. Der in diesem Verfahren beschriebene Authentifizierungsfluss, z. B. für Datenbanken, Caches, Nachrichten oder KI-Dienste, erfordert ein hohes Vertrauen in die Anwendung und trägt Risiken, die in anderen Flüssen nicht vorhanden sind. Verwenden Sie diesen Fluss nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.
Abrufen von Daten aus der Beispieldatenbank
In diesem Modul verwenden Sie eine Beispieldatenbank namens world
, die von der offiziellen MySQL-Website stammt. Führen Sie die folgenden Schritte aus, um die Daten abzurufen:
Laden Sie die Datenbankdatei mit dem folgenden Befehl herunter:
curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip
Entzippen Sie die Datenbankdatei mithilfe des folgenden Befehls:
unzip world-db.zip
Listen Sie die SQL-Datei auf, indem Sie die folgenden Befehle verwenden:
cd world-db ls -l world.sql
Das folgende Ergebnis ist typisch:
-rw-r--r-- 1 ****** wheel 398635 1 7 12:25 world.sql
Anmelden bei der Datenbank
Verwenden Sie den folgenden Befehl, um eine Verbindung mit der Datenbank herzustellen, indem Sie nur den Benutzernamen und das Kennwort anstelle eines Zugriffstokens verwenden:
az mysql flexible-server connect \
--name $MYSQL_SERVER_INSTANCE \
--user azureuser \
--interactive
Wenn Sie vom System aufgefordert werden, geben Sie das MySQL-Kennwort ein, das Sie zuvor abgerufen haben.
Nachdem Sie eine Verbindung hergestellt haben, können Sie die folgende Abfrage an der SQL-Eingabeaufforderung verwenden, um die verfügbaren Benutzernamen und Plug-Ins anzuzeigen:
SELECT user, host, plugin FROM mysql.user;
Das folgende Ergebnis ist typisch:
+----------------------------------+-----------+-----------------------+
| 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 |
+----------------------------------+-----------+-----------------------+
Erstellen einer Datenbank und Tabellen für Ihre Anwendung
Führen Sie die folgenden Schritte aus, um eine Datenbank für Ihre Anwendung aus dem world.sql-Skript zu erstellen und dann die Details zu überprüfen:
Verwenden Sie den folgenden Befehl, um die Datenbank und Tabellen zu erstellen:
az mysql flexible-server execute \ --name $MYSQL_SERVER_INSTANCE \ --admin-password azureuser \ --admin-password '$MYSQL_PASSWORD' \ --file-path "./world-db/world.sql"
Tipp
Sie können auch
mysql
verwenden, um eine Datenbank und Tabellen aus einer Skriptdatei zu erstellen, aber dieser Befehl dauert lange, bis er abgeschlossen ist.Vergewissern Sie sich, dass sich die Datenbanken und Tabellen in Ihrem Server befinden, indem Sie den folgenden Befehl verwenden:
az mysql flexible-server connect \ --name $MYSQL_SERVER_INSTANCE \ --admin-user $MYSQL_USER \ --database-name world \ --interactive
Wenn Sie vom System aufgefordert werden, geben Sie das MySQL-Kennwort ein, das Sie zuvor abgerufen haben.
Das folgende Ergebnis ist typisch:
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
Verwenden Sie an der SQL-Eingabeaufforderung die folgende Abfrage, um die Datenbanken auf dem Server anzuzeigen:
show databases;
Das folgende Ergebnis ist typisch:
+--------------------+ | Database | +--------------------+ | flexibleserverdb | | information_schema | | mysql | | newdatabase | | performance_schema | | sys | | world | +--------------------+ 7 rows in set Time: 0.152s
Verwenden Sie die folgende Abfrage, um die Tabellen in der
world
Datenbank auflisten:show tables;
Das folgende Ergebnis ist typisch:
+-----------------+ | Tables_in_world | +-----------------+ | city | | country | | countrylanguage | +-----------------+ 3 rows in set Time: 0.145s
Beispieldatenbank abfragen
Führen Sie die folgenden Schritte aus, um den Inhalt der world
Datenbank anzuzeigen:
Listen Sie alle Kontinentinformationen mit der folgenden Abfrage auf:
select distinct Continent from country ;
Das folgende Ergebnis ist typisch:
+---------------+ | Continent | +---------------+ | North America | | Asia | | Africa | | Europe | | South America | | Oceania | | Antarctica | +---------------+
Listen Sie länderspezifische Namen und Ländercodes nach Kontinent mit der folgenden Abfrage auf:
select code,name from country where Continent='Asia';
Das folgende Ergebnis ist typisch:
+------+----------------------+ | 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)
Listet alle Städte mit einer Bevölkerung von mehr als 1 Millionen auf, indem Sie die folgende Abfrage verwenden:
select * from city where CountryCode='JPN' AND Population > 1000000 ORDER BY Population DESC;
Das folgende Ergebnis ist typisch:
+------+---------------------+-------------+-----------+------------+ | 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)
Zusammenfassung der Einheit
Sie haben die Einrichtung und Vorbereitung für Ihre Azure-Datenbank für MySQL abgeschlossen – flexible Serverinstanz. Die nächste Einheit führt Sie in den Prozess der Bereitstellung der Jakarta EE-Anwendung für JBoss EAP auf Azure App Service sowie verschiedene Konfigurationsoptionen ein.