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 .env
arquivos 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.js
aplicativo e use o npm init
comando para criar o package.json
arquivo:
npm init --yes
Terceiro, instale o pacote MySQL usando o seguinte npm
comando:
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 .env
no diretório do projeto.
Segundo, adicione os parâmetros da conexão MySQL ao .env
arquivo:
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=todoapp
Você deve substituir DB_HOST
, DB_PORT
, DB_USER
, DB_NAME
e DB_PASSWORD
pelos reais.
Conectando-se ao servidor MySQL a partir do Node.js
Primeiro, crie um connect.js
arquivo no diretório do projeto.
A seguir, importe o mysql
módulo no connect.js
arquivo:
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 .env
arquivo 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 connection
objeto 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 err
argumento que fornece informações detalhadas caso ocorra algum erro.
Aqui está o connect.js
programa 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.js
programa que usa os parâmetros do MySQL do arquivo .env:
node --env-file .env connect.js
Linguagem 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_password
plugin, suportado pela maioria dos clientes.
Portanto, se você encontrar problemas de compatibilidade, deverá ativar explicitamente mysql_native_password
para 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 connection
objeto.
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.js
programa 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.