Conectando-se ao servidor MySQL a partir do Node.js

Resumo : neste tutorial, você aprenderá como se conectar ao servidor MySQL a partir de uma aplicação Node.js.

Observe que este tutorial é direcionado ao MySQL 8.0 e Node.js v20.6.0 ou posterior. Node.js v20.6.0 e mais recente oferecem suporte integrado para .envarquivos de configuração.

Instalando o driver Node.js para MySQL

Primeiro, abra o prompt de comando no Windows ou o Terminal em sistemas do tipo Unix.

Segundo, crie um diretório para armazenar o Node.jsaplicativo e use o npm initcomando para criar o package.jsonarquivo:

npm init --yes

Terceiro, instale o pacote MySQL usando o seguinte npmcomando:

npm install mysql

Criando um banco de dados de amostra

Primeiro, conecte-se ao servidor MySQL:

mysql -h localhost -u root -p

Segundo, crie um novo banco de dados chamado todoapp:

CREATE DATABASE todoapp;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Criando arquivo de configuração .env

Primeiro, crie um novo arquivo chamado .envno diretório do projeto.

Segundo, adicione os parâmetros da conexão MySQL ao .envarquivo:

DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=todoapp

Você deve substituir DB_HOST, DB_PORT, DB_USER, DB_NAMEe DB_PASSWORDpelos reais.

Conectando-se ao servidor MySQL a partir do Node.js

Primeiro, crie um connect.jsarquivo no diretório do projeto.

A seguir, importe o mysqlmódulo no connect.jsarquivo:

let mysql = require('mysql');Linguagem de código:  JavaScript  ( javascript )

Em seguida, crie uma conexão com o servidor MySQL chamando a createConnection()função:

let connection = mysql.createConnection({
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});Linguagem de código:  JavaScript  ( javascript )

Observe que acessamos os parâmetros do MySQL do .envarquivo por meio do arquivo process.env. Este recurso está disponível desde o Node.js v20.6.0.

Depois disso, chame o connect()método no connectionobjeto para conectar-se ao servidor MySQL:

connection.connect((err) => {
  if (err) return console.error(err.message);

  console.log('Connected to the MySQL server.');
});Linguagem de código:  JavaScript  ( javascript )

O connect()método aceita uma função de retorno de chamada que possui o errargumento que fornece informações detalhadas caso ocorra algum erro.

Aqui está o connect.jsprograma completo:

let mysql = require('mysql');

let connection = mysql.createConnection({
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

connection.connect((err) => {
  if (err) return console.error(err.message);

  console.log('Connected to the MySQL server.');
});
Linguagem de código:  JavaScript  ( javascript )

Por fim, execute o connect.jsprograma que usa os parâmetros do MySQL do arquivo .env:

 node --env-file .env connect.jsLinguagem de código:  JavaScript  ( javascript )

Saída:

Connected to the MySQL server.

Para torná-lo mais conveniente, você pode alterar a propriedade start do arquivo package.json para o seguinte:

...
  "scripts": {
    "start": " node --env-file .env connect.js"
  },
...Linguagem de código:  JavaScript  ( javascript )

Em seguida, use o comando npm start para executar o connect.js com informações do arquivo .env:

npm start

A saída indica que nos conectamos com sucesso ao servidor MySQL do programa Node.js.

Solução de problemas

Se você se conectar ao MySQL 8.0 ou posterior, provavelmente receberá a seguinte mensagem de erro:

error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Linguagem de código:  HTTP  ( http )

No MySQL 8.0, o plugin de autenticação padrão é caching_sha2_password, ao contrário do MySQL 5.7, que usa o mysql_native_passwordplugin, suportado pela maioria dos clientes.

Portanto, se você encontrar problemas de compatibilidade, deverá ativar explicitamente mysql_native_passwordpara um determinado usuário usando o seguinte comando:

ALTER USER 'user' 
IDENTIFIED WITH mysql_native_password BY 'password';Linguagem de código:  JavaScript  ( javascript )

Substitua o usuário e a senha pelos que você usa para se conectar ao MySQL.

Fechando conexão com o banco de dados

Para fechar uma conexão com o banco de dados normalmente, você chama o end()método no connectionobjeto.

O end()método garante que todas as consultas restantes serão executadas antes que a conexão com o banco de dados seja encerrada.

connection.end((err) => {
  if (err) return console.error(err.message);

  console.log('Close the database connection.');
});
Linguagem de código:  JavaScript  ( javascript )

Para forçar o fechamento imediato da conexão, você pode usar o destroy()método. O destroy()método garante que nenhum outro retorno de chamada ou evento será acionado para a conexão.

connection.destroy();Linguagem de código:  JavaScript  ( javascript )

Observe que o destroy()método não aceita nenhum argumento de retorno de chamada como o end()método.

A seguir mostra o connect.jsprograma completo:

let mysql = require('mysql');

let connection = mysql.createConnection({
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

connection.connect((err) => {
  if (err) return console.error(err.message);

  console.log('Connected to the MySQL server.');
});

connection.end((err) => {
  if (err) return console.error(err.message);

  console.log('Close the database connection.');
});
Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Conecte-se a um banco de dados MySQL a partir de um aplicativo Node.js.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *