Welling Guzman

MAMP MySQL Problem

Using the library node-mysql I found myself with an error that refused my node app to connect to an MySQL Database or in fact the server itself. At first I blame the library, searching and searching and I didn't find any solution that leads me to fix error. Every time I tried a connection I always get the error : Error: connect ECONNREFUSED.

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});

So I wrote an issue and it was not a library issue, it was MAMP's MySQL bad configuration. There is two thing that can resolve this problem:

Solution #1

On MAMP disable Allow local access only.

Solution #2

run mysql_config --socket in the terminal and use the output as socketPath value.

$ mysql_config --socket
/tmp/mysql.sock

Probably when you run mysql_config it would says:

-bash: mysql_config: command not found

In MAMP is located in: /Applications/MAMP/Library/bin/mysql_config so it would be:

$ /Applications/MAMP/Library/bin/mysql_config --socket
/tmp/mysql.sock

You can use alias or export to make this long path short.

var connection = mysql.createConnection({
  socketPath : '/tmp/mysql.sock',
  host     : 'localhost',
  user       : 'root',
  password   : '123'
});

Hope it helped you in any way.