Übung – Bereitstellen einer Azure-Datenbank für MySQL-Instanz

Abgeschlossen

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 identityangegeben. 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:

  1. Laden Sie die Datenbankdatei mit dem folgenden Befehl herunter:

    curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip
    
  2. Entzippen Sie die Datenbankdatei mithilfe des folgenden Befehls:

    unzip world-db.zip
    
  3. 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:

  1. 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.

  2. 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
    
  3. 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
    
  4. 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
    
  5. 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:

  1. 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    |
    +---------------+
    
  2. 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)
    
  3. 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.