2015-05-15 16 views
6

Używam strony serwera Node.js. Próbowałem mój kod na localhost i wszystko działa dobrze. Kupiłem serwer i zainstalowałem na nim Apache i node.js i przetestowałem tam moją aplikację internetową. Poprawnie zmieniłem konfiguracje połączeń MySQL z localhost na konfiguracje serwera.Node.js MySQL - Błąd: podłącz ECONNREFUSED

przetestować aplikację internetową z tej konfiguracji:

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

mogę uruchomić serwer node.js z:

$ node server.js 

Kiedy załadować stronę, to wyświetlane prawidłowo, ale gdy węzeł. js spróbuj połączyć się z bazą danych Zawsze mam następujący błąd:

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

Host jest nieprawidłowy lub musisz podać numer portu. Jakiego portu używa twój mysqld? Po tym rozwiązaniu kolejną możliwością jest zablokowanie portów na hoście. Jakiego rodzaju sieć łączysz? Zazwyczaj łączymy się za pośrednictwem lokalnego hosta lub sieci wewnętrznej, a nie internetu. – beiller

+0

@beiller Najpierw dziękuję za szybką odpowiedź. Próbowałem już z ustawieniem portu w konfiguracji, ale też nie działało. Mysql działa na tym porcie: 'tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 4322/mysqld' Mój server.js działa na porcie 2000, jeśli oba działają na tym samym porcie? Co masz na myśli mówiąc "z jakiego rodzaju sieci łączysz się?" Tank you! – Nico

+0

Nie nie działają one na tym samym porcie. Twój komunikat o błędzie oznacza w zasadzie "twoje połączenie zostało odrzucone przez system operacyjny" IE nigdy nie zbliżyłeś się do dotknięcia serwera mysql. Pytając, jakiej sieci, pytam, jest mysql i twój węzeł.js aplikacja działająca na tym samym serwerze fizycznym? – beiller

Odpowiedz

13

Musisz dodać wartość z socket path do obiektu config:

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

W MAMP, idziesz do http://localhost:8888/MAMP, a znajdziesz:

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

Na koniec trzeba:

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

Sprawdź dla MySQL port na twoim serwerze.

W MAMP domyślnie używa 8889.

Dodać, że do konfiguracji połączenia.

Twoja konfiguracja MySQL powinna wyglądać następująco.

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

Mam również ten sam problem w Google Cloud z nginx

zmieniły

host: 'localhost' 

do

host : 'cloud_instance_private_ip'

może pomóc kogoś z tym samym problemem

Powiązane problemy