Conectando-se ao MySQL - Node.js
Para trabalhar com um servidor MySQL em Node.js, existem vários drivers disponíveis. Os mais populares são mysql
mysql2
mysql2
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()
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:
: o host onde o servidor MySQL está em execução. O valor padrão é "localhost".host
: o número da porta onde o servidor MySQL está em execução. O valor padrão é "3306".port
: o usuário MySQL utilizado para a conexão.user
: a senha do usuário MySQL.password
: 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.database
: a codificação da conexão, por exemplo, "UTF8_GENERAL_CI" é usada por padrão.charset
: 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".timezone
Para estabelecer a conexão, podemos usar o método connect()
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()
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'
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()
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();