Guia de início rápido: usar Node.js para conectar e consultar dados no Banco de Dados do Azure para MySQL

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planejamento de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

APLICA-SE A: Banco de Dados do Azure para MySQL - Servidor Único

Importante

O servidor único do Banco de Dados do Azure para MySQL está no caminho de desativação. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?

Neste início rápido, você se conecta a um Banco de Dados do Azure para MySQL usando Node.js. Em seguida, você usa instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados das plataformas Mac, Linux e Windows.

Este artigo pressupõe que você esteja familiarizado com o desenvolvimento usando Node.js, mas é novo no trabalho com o Banco de Dados do Azure para MySQL.

Pré-requisitos

Importante

Verifique se o endereço IP do qual você está se conectando foi adicionado às regras de firewall do servidor usando o portal do Azure ou a CLI do Azure

Instalar Node.js e o conector de MySQL

Dependendo da sua plataforma, siga as instruções na seção apropriada para instalá Node.js. Use npm para instalar o pacote mysql2 e suas dependências na pasta do seu projeto.

  1. Visite a página de transferências do Node. js e, em seguida, selecione a opção de instalador Windows que pretende.

  2. Crie uma pasta de projeto local , como nodejsmysql.

  3. Abra o prompt de comando e, em seguida, altere o diretório para a pasta do projeto, como cd c:\nodejsmysql\

  4. Execute a ferramenta NPM para instalar a biblioteca de mysql2 na pasta do projeto.

    cd c:\nodejsmysql\
    "C:\Program Files\nodejs\npm" install mysql2
    "C:\Program Files\nodejs\npm" list
    
  5. Verifique a instalação verificando o texto de npm list saída. O número da versão pode variar à medida que forem sendo lançados patches novos.

Obter informações da ligação

Obtenha as informações de ligação necessárias para se ligar à Base de Dados do Azure para MySQL. Necessita do nome do servidor e das credenciais de início de sessão totalmente qualificados.

  1. Inicie sessão no portal do Azure.
  2. No menu à esquerda no portal do Azure, selecione Todos os recursos e procure o servidor que você criou (como mydemoserver).
  3. Selecione o nome do servidor.
  4. No painel Descrição geral do servidor, tome nota do Nome do servidor e do Nome de início de sessão de administrador do servidor. Caso se esqueça da sua palavra-passe, também pode repor a palavra-passe neste painel. Nome do servidor da Base de Dados do Azure para MySQL

Executar os exemplos de código

  1. Cole o código JavaScript em novos arquivos de texto e salve-o em uma pasta de projeto com .js de extensão de arquivo (como C:\nodejsmysql\createtable.js ou /home/username/nodejsmysql/createtable.js).

  2. Substitua host, userpassword e opções database de configuração no código com os valores que você especificou quando criou o servidor e o banco de dados.

  3. Obter certificado SSL: baixe o certificado necessário para se comunicar por SSL com seu banco de dados do Azure para servidor MySQL e salve o arquivo de https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem certificado em sua unidade local.

    Para Microsoft Internet Explorer e Microsoft Edge: Após a conclusão do download, renomeie o certificado para DigiCertGlobalRootCA.crt.pem.

    Consulte os seguintes links para certificados para servidores em nuvens soberanas: Azure Government, Microsoft Azure operado pela 21Vianet e Azure Germany.

  4. ssl Na opção config, substitua o nome do ca-cert arquivo pelo caminho para esse arquivo local.

  5. Abra o prompt de comando ou shell bash e, em seguida, altere o diretório para a pasta cd nodejsmysqldo projeto .

  6. Para executar o aplicativo, digite o comando node seguido pelo nome do arquivo, como node createtable.js.

  7. No Windows, se o aplicativo de nó não estiver no caminho da variável de ambiente, talvez seja necessário usar o caminho completo para iniciar o aplicativo de nó, como "C:\Program Files\nodejs\node.exe" createtable.js

Ligar, criar tabela e inserir dados

Utilize o seguinte código para se ligar e carregar os dados com as instruções SQL CREATE TABLE e INSERT INTO.

O método mysql.createConnection() é utilizado para fazer a interface com o servidor MySQL. A função connect() é utilizada para estabelecer a ligação ao servidor. A função query() é utilizada para executar a consulta SQL na base de dados 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.')
    });
};

Ler dados

Utilize o código seguinte para se ligar e ler dados com uma instrução SQL SELECT.

O método mysql.createConnection() é utilizado para fazer a interface com o servidor MySQL. O método connect() é utilizado para estabelecer a ligação ao servidor. O método query() é utilizado para executar a consulta SQL na base de dados MySQL. A matriz de resultados é utilizada para armazenar os resultados da consulta.

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

Atualizar dados

Use o código a seguir para conectar e atualizar dados usando uma instrução UPDATE SQL.

O método mysql.createConnection() é utilizado para fazer a interface com o servidor MySQL. O método connect() é utilizado para estabelecer a ligação ao servidor. O método query() é utilizado para executar a consulta SQL na base de dados 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.')
        });
};

Eliminar dados

Use o código a seguir para conectar e excluir dados usando uma instrução DELETE SQL.

O método mysql.createConnection() é utilizado para fazer a interface com o servidor MySQL. O método connect() é utilizado para estabelecer a ligação ao servidor. O método query() é utilizado para executar a consulta SQL na base de dados 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.')
        });
};

Clean up resources (Limpar recursos)

Para limpar todos os recursos usados durante este início rápido, exclua o grupo de recursos usando o seguinte comando:

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

Próximos passos