Rychlý start: Použití Node.js k připojení a dotazování dat ve službě Azure Database for MySQL

Upozornění

Tento článek odkazuje na CentOS, což je linuxová distribuce se stavem Konec životnosti (EOL). Zvažte své použití a plánování odpovídajícím způsobem. Další informace najdete v doprovodných materiálech CentOS End Of Life.

PLATÍ PRO: Jednoúčelový server Azure Database for MySQL

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?

V tomto rychlém startu se připojíte ke službě Azure Database for MySQL pomocí Node.js. Potom použijete příkazy SQL k dotazování, vkládání, aktualizaci a odstraňování dat v databázi z platforem Mac, Linux a Windows.

Tento článek předpokládá, že máte zkušenosti s vývojem pomocí Node.js, ale začínáte pracovat se službou Azure Database for MySQL.

Požadavky

Důležité

Ujistěte se, že ip adresa, ze které se připojujete, byla přidána pravidla brány firewall serveru pomocí webu Azure Portal nebo Azure CLI.

Instalace Node.js a konektoru MySQL

V závislosti na vaší platformě nainstalujte Node.js podle pokynů v příslušné části. Pomocí npm nainstalujte balíček mysql2 a jeho závislosti do složky projektu.

  1. Přejděte na stránku pro stažení Node.js a vyberte požadovanou možnost Instalační služby systému Windows.

  2. Vytvořte místní složku projektu, například nodejsmysql.

  3. Otevřete příkazový řádek a pak změňte adresář do složky projektu, například cd c:\nodejsmysql\

  4. Spusťte nástroj NPM a nainstalujte knihovnu mysql2 do složky projektu.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Ověřte instalaci kontrolou výstupního npm list textu. Číslo verze se může lišit v závislosti na vydávání nových oprav.

Získání informací o připojení

Získejte informace o připojení potřebné pro připojení ke službě Azure Database for MySQL. Potřebujete plně kvalifikovaný název serveru a přihlašovací údaje.

  1. Přihlaste se k webu Azure Portal.
  2. V nabídce vlevo na webu Azure Portal vyberte Všechny prostředky a vyhledejte server, který jste vytvořili (například mydemoserver).
  3. Vyberte název serveru.
  4. Na panelu Přehled serveru si poznamenejte Název serveru a Přihlašovací jméno správce serveru. Pokud zapomenete své heslo, můžete ho na tomto panelu také resetovat.

Spuštění ukázek kódu

  1. Vložte kód JavaScriptu do nových textových souborů a uložte ho do složky projektu s příponou souboru .js (například C:\nodejsmysql\createtable.js nebo /home/username/nodejsmysql/createtable.js).

  2. Nahraďte hostmožnosti , userpassword a database konfigurace v kódu hodnotami, které jste zadali při vytváření serveru a databáze.

  3. Získání certifikátu SSL: Stáhněte si certifikát potřebný ke komunikaci přes PROTOKOL SSL se serverem https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem Azure Database for MySQL a uložte soubor certifikátu na místní disk.

    Microsoft Internet Explorer a Microsoft Edge: Po dokončení stahování přejmenujte certifikát na DigiCertGlobalRootCA.crt.pem.

    Projděte si následující odkazy na certifikáty pro servery v suverénních cloudech: Azure Government, Microsoft Azure provozované společností 21Vianet a Azure Germany.

  4. ssl V konfigurační možnosti nahraďte ca-cert název souboru cestou k tomuto místnímu souboru.

  5. Otevřete příkazový řádek nebo prostředí Bash a pak změňte adresář do složky cd nodejsmysqlprojektu .

  6. Pokud chcete aplikaci spustit, zadejte příkaz uzlu následovaný názvem souboru, například node createtable.js.

  7. Pokud aplikace uzlu ve Windows není ve vaší cestě proměnné prostředí, možná budete muset ke spuštění aplikace uzlu použít úplnou cestu, například "C:\Program Files\nodejs\node.exe" createtable.js

Připojení, vytvoření tabulky a vložení dat

Pomocí následujícího kódu se připojte a nahrajte data s využitím příkazů CREATE TABLE a INSERT INTO jazyka SQL.

Metoda mysql.createConnection() slouží k vytvoření rozhraní pro server MySQL. Funkce connect() se používá k navázání připojení k serveru. Funkce query() se používá k provedení příkazu jazyka SQL na databázi MySQL.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
    if (err) {
        console.log("!!! Cannot connect !!! Error:");
        throw err;
    }
    else
    {
       console.log("Connection established.");
           queryDatabase();
    }
});

function queryDatabase(){
    conn.query('DROP TABLE IF EXISTS inventory;', function (err, results, fields) {
        if (err) throw err;
        console.log('Dropped inventory table if existed.');
    })
        conn.query('CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);',
            function (err, results, fields) {
                if (err) throw err;
        console.log('Created inventory table.');
    })
    conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['banana', 150],
            function (err, results, fields) {
                if (err) throw err;
        else console.log('Inserted ' + results.affectedRows + ' row(s).');
        })
    conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['orange', 154],
            function (err, results, fields) {
                if (err) throw err;
        console.log('Inserted ' + results.affectedRows + ' row(s).');
        })
    conn.query('INSERT INTO inventory (name, quantity) VALUES (?, ?);', ['apple', 100],
    function (err, results, fields) {
                if (err) throw err;
        console.log('Inserted ' + results.affectedRows + ' row(s).');
        })
    conn.end(function (err) {
    if (err) throw err;
    else  console.log('Done.')
    });
};

Čtení dat

Pomocí následujícího kódu se připojte a načtěte data s využitím příkazu SELECT jazyka SQL.

Metoda mysql.createConnection() slouží k vytvoření rozhraní pro server MySQL. Metoda connect() se používá k navázání připojení k serveru. Metoda query() se používá k provedení příkazu jazyka SQL na databázi MySQL. Pole results slouží k ukládání výsledků dotazu.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
        if (err) {
            console.log("!!! Cannot connect !!! Error:");
            throw err;
        }
        else {
            console.log("Connection established.");
            readData();
        }
    });

function readData(){
    conn.query('SELECT * FROM inventory',
        function (err, results, fields) {
            if (err) throw err;
            else console.log('Selected ' + results.length + ' row(s).');
            for (i = 0; i < results.length; i++) {
                console.log('Row: ' + JSON.stringify(results[i]));
            }
            console.log('Done.');
        })
    conn.end(
        function (err) {
            if (err) throw err;
            else  console.log('Closing connection.')
    });
};

Aktualizace dat

Pomocí následujícího kódu se připojte a aktualizujte data pomocí příkazu UPDATE SQL .

Metoda mysql.createConnection() slouží k vytvoření rozhraní pro server MySQL. Metoda connect() se používá k navázání připojení k serveru. Metoda query() se používá k provedení příkazu jazyka SQL na databázi MySQL.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
        if (err) {
            console.log("!!! Cannot connect !!! Error:");
            throw err;
        }
        else {
            console.log("Connection established.");
            updateData();
        }
    });

function updateData(){
       conn.query('UPDATE inventory SET quantity = ? WHERE name = ?', [200, 'banana'],
            function (err, results, fields) {
                if (err) throw err;
                else console.log('Updated ' + results.affectedRows + ' row(s).');
           })
       conn.end(
           function (err) {
                if (err) throw err;
                else  console.log('Done.')
        });
};

Odstranění dat

Pomocí následujícího kódu se připojte a odstraňte data pomocí příkazu DELETE SQL.

Metoda mysql.createConnection() slouží k vytvoření rozhraní pro server MySQL. Metoda connect() se používá k navázání připojení k serveru. Metoda query() se používá k provedení příkazu jazyka SQL na databázi MySQL.

const mysql = require('mysql2');
const fs = require('fs');

var config =
{
    host: 'mydemoserver.mysql.database.azure.com',
    user: 'myadmin@mydemoserver',
    password: 'your_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: {ca: fs.readFileSync("your_path_to_ca_cert_file_DigiCertGlobalRootCA.crt.pem")}
};

const conn = new mysql.createConnection(config);

conn.connect(
    function (err) {
        if (err) {
            console.log("!!! Cannot connect !!! Error:");
            throw err;
        }
        else {
            console.log("Connection established.");
            deleteData();
        }
    });

function deleteData(){
       conn.query('DELETE FROM inventory WHERE name = ?', ['orange'],
            function (err, results, fields) {
                if (err) throw err;
                else console.log('Deleted ' + results.affectedRows + ' row(s).');
           })
       conn.end(
           function (err) {
                if (err) throw err;
                else  console.log('Done.')
        });
};

Vyčištění prostředků

Pokud chcete vyčistit všechny prostředky použité během tohoto rychlého startu, odstraňte skupinu prostředků pomocí následujícího příkazu:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Další kroky