Szybki start: nawiązywanie połączeń i wykonywanie zapytań dotyczących danych w usłudze Azure Database for MySQL przy użyciu Node.js

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i planowanie. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

DOTYCZY: Azure Database for MySQL — pojedynczy serwer

Ważne

Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?

W tym przewodniku Szybki start nawiąż połączenie z usługą Azure Database for MySQL przy użyciu Node.js. Następnie użyjesz instrukcji SQL do wykonywania zapytań, wstawiania, aktualizowania i usuwania danych w bazie danych z platform Mac, Linux i Windows.

W tym artykule założono, że wiesz już, jak programować przy użyciu Node.js, ale dopiero zaczynasz pracę z usługą Azure Database for MySQL.

Wymagania wstępne

Ważne

Upewnij się, że adres IP, z którego nawiązujesz połączenie, został dodany reguł zapory serwera przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure

Instalowanie środowiska Node.js i łącznika programu MySQL

W zależności od platformy postępuj zgodnie z instrukcjami w odpowiedniej sekcji, aby zainstalować Node.js. Użyj narzędzia npm, aby zainstalować pakiet mysql2 i jego zależności w folderze projektu.

  1. Odwiedź stronę pobierania programu Node.js i wybierz odpowiednią opcję Instalatora Windows.

  2. Utwórz lokalny folder projektu, taki jak nodejsmysql.

  3. Otwórz wiersz polecenia, a następnie zmień katalog na folder projektu, na przykład cd c:\nodejsmysql\

  4. Uruchom narzędzie NPM, aby zainstalować bibliotekę mysql2 w folderze projektu.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Sprawdź instalację, sprawdzając tekst danych wyjściowych polecenia npm list. Numer wersji może się różnić po wydaniu nowych poprawek.

Pobieranie informacji o połączeniu

Pobierz informacje o połączeniu potrzebne do nawiązania połączenia z usługą Azure Database for MySQL. Potrzebna jest w pełni kwalifikowana nazwa serwera i poświadczenia logowania.

  1. Zaloguj się w witrynie Azure Portal.
  2. W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Wszystkie zasoby, a następnie wyszukaj utworzony serwer (na przykład mydemoserver).
  3. Wybierz nazwę serwera.
  4. Po przejściu do panelu Przegląd serwera zanotuj nazwę serwera i nazwę logowania administratora serwera. Jeśli zapomnisz hasła, możesz również je zresetować z poziomu tego panelu. Nazwa serwera usługi Azure Database for MySQL

Uruchamianie przykładowych kodów

  1. Wklej kod JavaScript do nowych plików tekstowych, a następnie zapisz go w folderze projektu z rozszerzeniem pliku .js (np. C:\nodejsmysql\createtable.js lub /home/username/nodejsmysql/createtable.js).

  2. Zastąp hostopcje , userpassword i database konfiguracji w kodzie wartościami określonymi podczas tworzenia serwera i bazy danych.

  3. Uzyskaj certyfikat SSL: pobierz certyfikat wymagany do komunikacji za pośrednictwem protokołu SSL z serwerem https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem usługi Azure Database for MySQL i zapisz plik certyfikatu na dysku lokalnym.

    W przypadku programów Microsoft Internet Explorer i Microsoft Edge: po zakończeniu pobierania zmień nazwę certyfikatu na DigiCertGlobalRootCA.crt.pem.

    Zobacz następujące linki do certyfikatów dla serwerów w suwerennych chmurach: Azure Government, Microsoft Azure obsługiwane przez firmę 21Vianet i Azure (Niemcy).

  4. ssl W opcji konfiguracji zastąp ca-cert nazwę pliku ścieżką do tego pliku lokalnego.

  5. Otwórz wiersz polecenia lub powłokę bash, a następnie zmień katalog na folder cd nodejsmysqlprojektu .

  6. Aby uruchomić aplikację, wprowadź polecenie node, a następnie nazwę pliku, na przykład node createtable.js.

  7. W systemie Windows, jeśli aplikacja węzła nie znajduje się w ścieżce zmiennej środowiskowej, może być konieczne użycie pełnej ścieżki do uruchomienia aplikacji węzła, takiej jak "C:\Program Files\nodejs\node.exe" createtable.js

Nawiązywanie połączenia, tworzenie tabeli i wstawianie danych

Użyj poniższego kodu, aby nawiązać połączenie i załadować dane przy użyciu instrukcji CREATE TABLE i INSERT INTO języka SQL.

Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Funkcja connect() służy do nawiązywania połączenia z serwerem. Funkcja query() służy do wykonywania zapytania SQL względem bazy danych 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.')
    });
};

Odczyt danych

Użyj poniższego kodu, aby nawiązać połączenie i odczytać dane za pomocą instrukcji SELECT języka SQL.

Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych MySQL. Tablica wyników jest używana do przechowywania wyników zapytania.

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.')
    });
};

Aktualizowanie danych

Użyj poniższego kodu, aby nawiązać połączenie i zaktualizować dane przy użyciu instrukcji UPDATE JĘZYKA SQL.

Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych 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.')
        });
};

Usuwanie danych

Użyj następującego kodu, aby nawiązać połączenie i usunąć dane przy użyciu instrukcji DELETE języka SQL.

Metoda mysql.createConnection() służy do połączenia interfejsem z serwerem programu MySQL. Metoda connect() służy do nawiązywania połączenia z serwerem. Metoda query() służy do wykonywania zapytania SQL względem bazy danych 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.')
        });
};

Czyszczenie zasobów

Aby wyczyścić wszystkie zasoby używane w tym przewodniku Szybki start, usuń grupę zasobów przy użyciu następującego polecenia:

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

Następne kroki