Oefening: een Azure Database voor MySQL-exemplaar uitrollen

Voltooid

In deze oefening maakt u uw exemplaar van Azure Database for MySQL - Flexible Server en vult u het met voorbeeldgegevens.

De voorbeeldtoepassing en het script ophalen

Kloon de voorbeeldtoepassing en het shellscript vanuit de GitHub-opslagplaats met behulp van de volgende opdracht:

git clone https://github.com/MicrosoftDocs/mslearn-jakarta-ee-azure.git

Het klonen van het project produceert de volgende bestandsstructuur:

├── 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

Aanmelden bij Azure

Als u zich nog niet hebt aangemeld bij Azure, meldt u zich aan met behulp van de volgende opdracht:

az login

Een standaardinstallatielocatie instellen

De opdrachten die worden uitgevoerd door het script dat in deze module wordt gebruikt, verwachten een --location optie. Geef een standaardwaarde voor deze optie op met behulp van de volgende opdracht, waarbij u <location> vervangt door een geschikte regio. U moet dezelfde regio gebruiken die u gebruikt voor het implementeren van uw Jakarta EE-toepassing verderop in deze module.

az configure --defaults location=<location>

Een Azure Database for MySQL - Flexible Server-exemplaar maken

Navigeer naar de map mslearn-jakarta-ee-azure en gebruik vervolgens het volgende commando om uw Azure Database voor MySQL - Flexible Server-exemplaar te maken.

Belangrijk

Gebruik de volgende opdracht in een IPv4-omgeving. Als uw omgeving een IPv6-adres heeft, mislukt de opdracht omdat de firewallconfiguratie hiervoor nog geen IPv6-adressen ondersteunt.

Als er een fout optreedt tijdens de uitvoering van het script, stopt het proces midden in de uitvoering. Er kan een fout optreden terwijl het script machtigingen verleent, zoals aangegeven in het uitvoerbericht Granting the User.Read.All, GroupMember.Read.All, and Application.Read.All permissions to the user managed identity. Als u deze fout wilt oplossen, meldt u zich opnieuw aan bij de Azure CLI met een gebruiker met Azure AD administrator bevoegdheden en voert u het script opnieuw uit.

./setup_mysql.sh flexible

De typische uitvoer bevat het volgende succes, plus enkele belangrijke waarden die u in de rest van deze module gebruikt:

[INFO] -------------------------------------------------------
[INFO] Azure Database for MySQL Setup Completed SUCCESS
[INFO] -------------------------------------------------------

Sla de sleutelwaarden op die in de uitvoer worden weergegeven, omdat u deze waarden in latere stappen gebruikt.

Omgevingsvariabelen instellen

Gebruik de volgende opdrachten om de sleutelwaarden op te slaan. Zorg ervoor dat u de <...> tijdelijke aanduidingen vervangt door de waarden die door het script in de vorige sectie zijn gegenereerd.

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>

Notitie

Microsoft raadt aan de veiligste verificatiestroom te gebruiken die beschikbaar is. De verificatiestroom die in deze procedure wordt beschreven, zoals voor databases, caches, berichten of AI-services, vereist een hoge mate van vertrouwen in de toepassing en draagt risico's die niet aanwezig zijn in andere stromen. Gebruik deze stroom alleen als veiligere opties, zoals beheerde identiteiten voor wachtwoordloze of sleutelloze verbindingen, niet haalbaar zijn. Voor bewerkingen van lokale machines geeft u de voorkeur aan gebruikersidentiteiten voor verbindingen zonder wachtwoord of sleutelloze verbindingen.

Gegevens ophalen uit de voorbeelddatabase

In deze module gebruikt u een voorbeelddatabase genaamd world van de officiële MySQL-website. Gebruik de volgende stappen om de gegevens op te halen:

  1. Download het databasebestand met behulp van de volgende opdracht:

    curl -o world-db.zip https://downloads.mysql.com/docs/world-db.zip
    
  2. Pak het databasebestand uit met behulp van de volgende opdracht:

    unzip world-db.zip
    
  3. Geef het SQL-bestand weer met behulp van de volgende opdrachten:

    cd world-db
    ls -l world.sql
    

    De volgende uitvoer is gebruikelijk:

    -rw-r--r--  1 ******  wheel  398635  1  7 12:25 world.sql
    

Aanmelden bij de database

Gebruik de volgende opdracht om verbinding te maken met de database met behulp van alleen de gebruikersnaam en het wachtwoord, in plaats van een toegangstoken:

az mysql flexible-server connect \
    --name $MYSQL_SERVER_INSTANCE \
    --user azureuser \
    --interactive

Wanneer het systeem u vraagt, voert u het MySQL-wachtwoord in dat u eerder hebt opgehaald.

Nadat u verbinding hebt gemaakt, kunt u de volgende query gebruiken bij de SQL-prompt om de beschikbare gebruikersnamen en invoegtoepassingen weer te geven:

SELECT user, host, plugin FROM mysql.user;

De volgende uitvoer is gebruikelijk:

+----------------------------------+-----------+-----------------------+
| 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 |
+----------------------------------+-----------+-----------------------+

Een database en tabellen voor uw toepassing maken

Gebruik de volgende stappen om een database voor uw toepassing te maken op basis van het world.sql script en controleer vervolgens de details ervan:

  1. Gebruik de volgende opdracht om de database en tabellen te maken:

    az mysql flexible-server execute \
        --name $MYSQL_SERVER_INSTANCE \
        --admin-password azureuser \
        --admin-password '$MYSQL_PASSWORD' \
        --file-path "./world-db/world.sql"
    

    Aanbeveling

    U kunt ook mysql een database en tabellen maken op basis van een scriptbestand, maar het duurt lang voordat deze opdracht is voltooid.

  2. Controleer of de databases en tabellen zich op uw server bevinden met behulp van de volgende opdracht:

    az mysql flexible-server connect \
        --name $MYSQL_SERVER_INSTANCE \
        --admin-user $MYSQL_USER \
        --database-name world \
        --interactive
    
  3. Wanneer het systeem u vraagt, voert u het MySQL-wachtwoord in dat u eerder hebt opgehaald.

    De volgende uitvoer is gebruikelijk:

    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. Gebruik bij de SQL-prompt de volgende query om de databases op de server weer te geven:

    show databases;
    

    De volgende uitvoer is gebruikelijk:

    +--------------------+
    | Database           |
    +--------------------+
    | flexibleserverdb   |
    | information_schema |
    | mysql              |
    | newdatabase        |
    | performance_schema |
    | sys                |
    | world              |
    +--------------------+
    
    7 rows in set
    Time: 0.152s
    
  5. Gebruik de volgende query om de tabellen in de world database weer te geven:

    show tables;
    

    De volgende uitvoer is gebruikelijk:

    +-----------------+
    | Tables_in_world |
    +-----------------+
    | city            |
    | country         |
    | countrylanguage |
    +-----------------+
    
    3 rows in set
    Time: 0.145s
    

Een query uitvoeren op de voorbeelddatabase

Gebruik de volgende stappen om de inhoud van de world database weer te geven:

  1. Geef alle continentgegevens weer met behulp van de volgende query:

    select distinct Continent from country ;
    

    De volgende uitvoer is gebruikelijk:

    +---------------+
    | Continent     |
    +---------------+
    | North America |
    | Asia          |
    | Africa        |
    | Europe        |
    | South America |
    | Oceania       |
    | Antarctica    |
    +---------------+
    
  2. Vermeld landnamen en landcodes per continent met behulp van de volgende query:

    select code,name from country where Continent='Asia';
    

    De volgende uitvoer is gebruikelijk:

    +------+----------------------+
    | 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. Vermeld alle steden met een populatie van meer dan 1 miljoen met behulp van de volgende query:

    select * from city where CountryCode='JPN' AND Population > 1000000 ORDER BY Population DESC;
    

    De volgende uitvoer is gebruikelijk:

    +------+---------------------+-------------+-----------+------------+
    | 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)
    

Samenvatting van eenheden

U hebt de installatie en voorbereiding voor uw exemplaar van Azure Database for MySQL - Flexible Server voltooid. In de volgende les maakt u kennis met het proces voor het implementeren van de Jakarta EE-toepassing in JBoss EAP in Azure App Service, samen met verschillende configuratieopties.