Node.js MySQL - Ошибка: подключение ECONNREFUSED

Я использую серверную часть Node.js. Я пробовал свой код на localhost, и все работает нормально. Я купил сервер и установил Apache и Node.js на нем и проверил там свое веб-приложение. Я правильно изменил конфигурации подключения MySQL от localhost к конфигурациям сервера.

Я тестирую свое веб-приложение с помощью этой конфигурации:

var mysql      = require('mysql');
var mysqlConnection;
function new_mysqlConnection() {
    mysqlConnection = mysql.createConnection({
      host     : 'myurl.at',
      user     : 'myusername',
      database : 'mydatabase',
      password : 'mypassword'
    });
}

Я запускаю сервер Node.js с помощью

$ node server.js

Когда я загружаю страницу, она отображается правильно, но когда Node.js пытается подключиться к базе данных, я всегда получал следующую ошибку:

Error: connect ECONNREFUSED
    at errnoException (net.js:905:11)
    at Object.afterConnect [as oncomplete] (net.js:896:19)
    --------------------
    at Protocol._enqueue (/var/www/node_modules/mysql/lib/protocol/Protocol.js:135:48)
    at Protocol.handshake (/var/www/node_modules/mysql/lib/protocol/Protocol.js:52:41)
    at Connection.connect (/var/www/node_modules/mysql/lib/Connection.js:119:18)
    at reconnectDb (/var/www/server.js:319:18)
    at app.get.email (/var/www/server.js:109:2)
    at Layer.handle [as handle_request] (/var/www/node_modules/express/lib/router/layer.js:82:5)
    at trim_prefix (/var/www/node_modules/express/lib/router/index.js:302:13)
    at /var/www/node_modules/express/lib/router/index.js:270:7
    at Function.proto.process_params (/var/www/node_modules/express/lib/router/index.js:321:12)
    at next (/var/www/node_modules/express/lib/router/index.js:261:10)

Ответ 1

Вам нужно добавить значение socket path в объект конфигурации:

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

В MAMP вы перейдете к http://localhost:8888/MAMP, и вы найдете:

/Applications/MAMP/tmp/mysql/mysql.sock

В конце у вас есть:

var connection = mysql.createConnection({
  host     : config.host,
  user     : config.user,
  password : config.pass,
  database : config.db,
  socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock'
});

Ответ 2

Проверьте свой порт MySQL на своем сервере.

В MAMP по умолчанию используется 8889.

Добавьте это в конфигурацию подключения.

Конфигурация MySQL должна выглядеть так.

this.pool = mysql.createPool({
  connectionLimit: 10,
  host: 'localhost',
  user: 'root',
  password: 'root',
  database: 'todo',
  port: '8889'
});

Ответ 3

У меня была та же проблема, но я решил это, изменив

host:  'localhost'

в

host:   '127.0.0.1'

Ответ 4

У меня тоже такая же проблема в облаке Google с nginx

изменено

 host: 'localhost'

к

host : 'cloud_instance_private_ip'

может помочь кому-то с той же проблемой

Ответ 5

Это наверное курс из-за отсутствия порта и базы данных. Сначала я написал: хост, пользователь, пароль и нет базы данных и порта.

Здесь вам нужно указать, какое у вас имя базы данных, какой у вас номер порта. Таким образом, общее количество должно быть: 1. хост 2. пользователь 3. пароль 4. база данных 5. порт

Это работает для меня, попробуйте, если это работает и для вас.

Ответ 6

Убедитесь, что ваш сервер xampp mysql запущен или нет

Ответ 7

У меня также есть та же проблема, но я нашел решение, добавив: port:"80" я connect with node.js to the server php mysql using this code: var mysql = require ('mysql'); '

var connection=mysql.createConnection({
   port:"80",
    host:"localhost",
    user:"root",
    password:""
});