error de node.js mysql: ECONNREFUSED

¿Por qué no puedo conectarme al servidor mysql?

En el mismo servidor, se está ejecutando un servidor Apache / PHP y se conecta sin problemas.

var mysql_link = { host : 'localhost', port : 3308, database: 'nodetest', user : 'root', password : 'xxx' }; var connection = mysql.createConnection(mysql_link); connection.connect(function(err){ console.log(err); if(err != null){ response.write('Error connecting to mysql:' + err+'\n'); } }); connection.end(); 

error

 { [Error: connect ECONNREFUSED] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect', fatal: true } 

actualizar

 root@dyntest-amd-6000-8gb /var/www/node/dyntest # ps ax | grep mysqld 7928 pts/0 S+ 0:00 grep mysqld 28942 ? S 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid 29800 ? Sl 17:31 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/lib/mysql/mysql-error.log --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 

Si esto ha funcionado antes, mi primera suposición sería que ya tienes una copia de tu script node.js ejecutándose en segundo plano que contiene la conexión.

Creo que la conexión rechazada es un mensaje de error tcp / ip, en lugar de algo de MySQL que sugiere que no se está ejecutando o se está ejecutando en otro puerto o con sockets.

¿Podría intentar comunicarse por telnet con el puerto 3308? Para ver si el servidor se está ejecutando en ese puerto?

 telnet localhost 3308 

¿Puedes probar también?

 mysql -hlocalhost -uroot -pxxx 

Sé que esta pregunta ha sido respondida, pero para mí el problema fue que el servidor mysql escucha en un socket Unix que no está en un socket tcp. Entonces la solución fue agregar:

 port: '/var/run/mysqld/mysqld.sock' 

a las opciones de conexión.

Visión de conjunto

Para cualquier otra persona que tenga este problema y esté ejecutando MAMP . Sospeché que el problema tenía que ver con la red y no con MySQL o Node.js

Solución

Si abre MAMP y hace clic en MySQL en el panel de navegación izquierdo, se abrirá la página de opciones de MySQL. En el centro de la página, verá una casilla que dice:

“Permitir acceso a la red a MySQL “.

Marque esta casilla y luego reinicie su MAMP . En este punto, ahora puede probar su conexión a MySQL con telnet o un script node.js

Insinuación

Recuerde que puede verificar en qué port está ejecutando su MySQL abriendo MAMP y haciendo clic en el enlace de puertos en el panel de navegación izquierdo.

Ayuda visual

enter image description here

Por alguna razón muy extraña, mi computadora solo me permitió tener el puerto 3306 como puerto predeterminado para mi conexión para que funcione.

Captura de pantalla

También tengo este problema cuando trato de conectarme y desconectarme muchas veces, este problema se resolvió mediante la conexión final y la ejecución del servidor, después de la conexión cerrada, ahora puedo conectarme sin problemas

Como a continuación :

mysql.createConnection() connection.end(); después de que el servidor funcione bien, elimine la función connection.end () de su código y vuelva a ejecutar el servidor