Introdução ao MySQL com Node.js
Para trabalhar com um servidor MySQL em Node.js, existem vários drivers disponíveis. Os mais populares são mysql
e mysql2
. Em grande parte, eles são compatíveis entre si. Neste caso, usaremosmysql2
, pois, segundo vários testes, ele oferece melhor desempenho.
Vamos começar instalando o pacote mysql2
:
npm install --save mysql2
Criando a Conexão
Para criar uma conexão, utilizamos o método createConnection()
, que recebe as configurações de conexão como parâmetro e retorna um objeto que representa a conexão.
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "senha_do_servidor",
});
As configurações passadas para o método podem incluir vários parâmetros. Os mais utilizados são:
host
: o host onde o servidor MySQL está em execução. O valor padrão é "localhost".port
: o número da porta onde o servidor MySQL está em execução. O valor padrão é "3306".user
: o usuário MySQL utilizado para a conexão.password
: a senha do usuário MySQL.database
: o nome do banco de dados ao qual se está conectando. Este parâmetro é opcional. Se não for especificado, a conexão é feita ao servidor como um todo.charset
: a codificação da conexão, por exemplo, "UTF8_GENERAL_CI" é usada por padrão.timezone
: o fuso horário do servidor MySQL. Esse parâmetro é usado para converter os valores de data/hora do servidor para JavaScript. O valor padrão é "local".
Para estabelecer a conexão, podemos usar o método connect()
do objeto connection
:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "senha_do_servidor",
});
connection.connect(function (err) {
if (err) {
return console.error("Erro: " + err.message);
} else {
console.log("Conexão com o servidor MySQL estabelecida com sucesso");
}
});
O método connect()
aceita uma função de callback que recebe um parâmetro contendo o erro, caso ocorra algum problema durante a conexão.
Possíveis Erros na Conexão
Se ocorrer um erro ao tentar se conectar ao servidor MySQL como, por exemplo:
Client does not support authentication protocol requested by server; consider upgrading MySQL client
Nesse caso, é necessário executar o seguinte comando no MySQL Workbench:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Substitua 'password'
pela senha do MySQL para o usuário root.
Fechando a Conexão
Para fechar a conexão, utilizamos o método end()
:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb",
password: "senha_do_servidor",
});
// Testando a conexão
connection.connect(function (err) {
if (err) {
return console.error("Erro: " + err.message);
} else {
console.log("Conexão com o servidor MySQL estabelecida com sucesso");
}
});
// Fechando a conexão
connection.end(function (err) {
if (err) {
return console.log("Erro: " + err.message);
}
console.log("Conexão encerrada");
});
Ao executar a aplicação, se a conexão for bem-sucedida e posteriormente encerrada, veremos no console:
Conexão com o servidor MySQL estabelecida com sucesso Conexão encerrada
O método end()
garante que todos os pedidos pendentes sejam concluídos antes de encerrar a conexão com o banco de dados.
Se não chamarmos esse método, a conexão permanecerá ativa, e a aplicação Node.js continuará em execução até que o servidor MySQL feche a conexão.
Caso seja necessário encerrar a conexão imediatamente, sem esperar pela conclusão dos pedidos pendentes, pode-se usar o método destroy()
:
connection.destroy();