Connection refused when connecting to MySql using NodeJS mysql2


I am running a NodeJS app hosted on a (linux) dedicated Plesk server, under a subdomain.
Trying to connect to a MariaDB mysql server.
The NodeJS code:

const mysql = require('mysql2');

const con = mysql.createConnection({
  host: "localhost",
  user: "username",
  password: "password",
  database: "myDatabase"
global.MYSQL_CONNECTION = con;

function Connect(onSuccess){
    con.connect(function(err) {
        if (err) throw err;
        console.log("MySQL connected successfully.");

When I run this I get the following error:

Error: connect ECONNREFUSED ::1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1195:16) {
  errno: -111,
  syscall: 'connect',
  address: '::1',
  port: 3306,
  fatal: true

However, when I run mysql -hlocalhost -uusername -ppassword on my bash terminal it connects fine, meaning the credentials are correct and the user has permissions.

What could be causing this?


Figured out the solution to this.
All I had to do was to change the host to :

const con = mysql.createConnection({
  host: "",
  user: "username",
  password: "password",
  database: "myDatabase"

I am unsure of the reason. It most probably has something to do with the fact that this runs on a subdomain. Would be great if anyone could specify the reason.

Answered By – fourthedev

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published