1
resposta

Erro ao conectar ao MySQL remotamente com NodeJS

Tenho um banco de dados MySQL criado remotamente pelo AwardSpace. Consigo conectar a ele usando PDO no PHP, como estou estudando nodeJS quero conectar a este mesmo banco usando NodeJS. Mesmo usando a mesmas configurações (host, user, db, password) que utilizo no PHP o node me retorna o erro ECONNREFUSED. Pesquisando eu vi que esse erro é dado quando o servidor recusa a conexão. Vou deixar meu código abaixo e a gradeço muito se alguém pude me ajudar a resolver este problema.

conexao.js:

const mysql = require('mysql')

const conexao = mysql.createConnection({
  host: 'fdb30.awardspace.net',
  user: '3766405_john',
  password: 'minhaSenha',
  database: '3766405_john',
})


module.exports = conexao

index.js

const customExpress = require('./config/customExpress')
const conexao = require('./infraestrutura/conexao')

conexao.connect(erro => {
  if (erro) {
    console.log(erro)
  } else {
    console.log('conectado com sucesso')

    const app = customExpress()

    app.listen(3000, () => console.log('Servidor rodando na porta 3000'))
  }
})

Abaixo o código que utilizo para conectar ao banco de dados com PHP:

function mysqlConnect()
{
  $db_host = "fdb30.awardspace.net";
  $db_username = "3766405_john";
  $db_password = "minhaSenha";
  $db_name = "3766405_john";

  // dsn é apenas um acrônimo de database source name
  $dsn = "mysql:host=$db_host;dbname=$db_name;charset=utf8mb4";

  $options = [
    PDO::ATTR_EMULATE_PREPARES => false, // desativa a execução emulada de prepared statements
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // ativa o modo de erros para lançar exceções    
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // altera o modo padrão do método fetch para FETCH_ASSOC
  ];

  try {
    $pdo = new PDO($dsn, $db_username, $db_password, $options);
    return $pdo;
  } 
  catch (Exception $e) {
    //error_log($e->getMessage(), 3, 'log.php');
    exit('Ocorreu uma falha na conexão com o BD: ' . $e->getMessage());
  }
}
1 resposta

Boa tarde John, tudo certo?

Em primeiro lugar eu gostaria de te sugerir utilizar o pacote npm chamado config. Ele te permite compartilhar códigos mantendo as credenciais em arquivos diferentes, evitando que você precise expor essas informações. Ele é utilizado em cursos seguintes de Node.js, mas se quiser pode ler mais sobre aqui. Caso esse código contenha alguma credencial real sua sugiro alterá-la e mudar sua senha imediatamente.

É difícil conseguir apontar com certeza como solucionar esse problema apenas com as informações providenciadas. Você poderia nos enviar uma cópia da saída completa do erro que é gerado ao tentar se conectar? O erro pode ser devido à falta de algum parâmetro que seja necessário enviar para essa instância específica de banco de dados. Recomendo dar uma olhada nessa lista de parâmetros que podem ser passados na chamada de mysql.createConnection() e se o erro menciona alguma coisa que esteja próxima.

Estou no aguardo. Espero ter ajudado e bons estudos!