[SOLVED] Node.js “Error: connect ECONNREFUSED” when trying to connect to MySQL database


This Content is from Stack Overflow. Question asked by piroli

I’m a novice at node.js and I want to create an API which sends data to a MySQL server to store them.

I followed a youtube tutorial to create a connection with a MySQL database, also checked other tutorials just to be sure, but I always get this error message when my code tries to connect to MySQL. I used XAMPP first, and then tried downloading and using MySQL from mysql.com, but got the same error.

        throw err;

Error: connect ECONNREFUSED
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1247:16)
    at Protocol._enqueue (/home/broken/mysql_projekt/node_modules/mysql/lib/protocol/Protocol.js:144:48)
    at Protocol.handshake (/home/broken/mysql_projekt/node_modules/mysql/lib/protocol/Protocol.js:51:23)
    at Connection.connect (/home/broken/mysql_projekt/node_modules/mysql/lib/Connection.js:116:18)
    at Object.<anonymous> (/home/broken/mysql_projekt/app.js:22:4)
    at Module._compile (node:internal/modules/cjs/loader:1126:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
    at Module.load (node:internal/modules/cjs/loader:1004:32)
    at Function.Module._load (node:internal/modules/cjs/loader:839:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  errno: -111,
  syscall: 'connect',
  address: '',
  port: 3306,
  fatal: true

I tried the suggested solutions at other questions but I didn’t succeed.
Here’s what I tried:

  • Changing localhost to in the connection configuration.
  • Check in services.msc if the MySQL service is in a running state.
  • Tried to add firewall rules to allow outbound and inbound access on
    port 3306.
  • Create another user aside from root with a password with all
    privileges, and try to connect with that.
  • Also tried to add “socketPath: ‘/var/run/mysqld/mysqld.sock'” to my
    connection configuration, as someone in another

    said that it seemed to solve other’s problem, but they just got a
    different error message, just like me. (unfortunately I couldn’t really understand what it does)
  • Also tried on another computer, but of course the issue still
  • Tried to specify the port number to 3306 in the connection

Here is my code:

var express = require('express');
var mysql = require('mysql');

var PORT = 3000;

var app = express();

    () => {console.log(`Server started on port ${PORT}`)

//Creating MySQL connection
var db = mysql.createConnection({
    host     : "localhost",
    user     : "user",
    password : "password"
    //socketPath: '/var/run/mysqld/mysqld.sock'

db.connect((err) => {
        throw err;
    console.log('MySQL connected');

If someone has figured it out, could you share the solution? Thank you!


The error ECONNREFUSED is being raised by Node.js itself, and not this module. This module passes the error through, though, from Node.js. Basically, this module is asking Node.js to create a TCP connection to, port 3306, but for whatever reason, Node.js cannot do this and raises the ECONNREFUSED error.

Unfortunately there is nothing this module can do to resolve this.

It could be an issue with Node.js (in which you can open on the Node.js issue tracker) or an issue with your MySQL server (did it restart or something?). If there is some specific things you can list to change in this module, we can re-open the issue, though.

Answered by dougwilson 

This Question and Answer are collected from stackoverflow and tested by JTuto community, is licensed under the terms of CC BY-SA 4.0.

people found this article helpful. What about you?