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.