2017-02-06 2 views
0

У меня проблема с NodeJS и node-mysql. По какой-то причине в моей локальной среде я могу подключиться к базе данных и получить доступ к конечным точкам для обновления и вставки информации. Я использую mac os x Sierra для разработки. Я использую Ubuntu 16.04 на моем сервере Dev, и я просто запускаю узел на порту 80.NodeJS не будет подключаться к локальной базе данных с узлом-mysql

Файл connection.js выглядит так.

var mysql = require('mysql'); 

function Connection() { 
    this.pool = null; 

    this.init = function() { 
    this.pool = mysql.createPool({ 
     connectionLimit: 100, 
     host: 'localhost', 
     user: 'Miguel', 
     password: 'thepassword', 
     database: 'lavishwebLogin', 
    port:'3306' 
    }); 
    }; 

    this.acquire = function(callback) { 
    this.pool.getConnection(function(err, connection) { 
     callback(err, connection); 
    }); 
    }; 
} 

module.exports = new Connection(); 

Моя конечная точка выглядит следующим образом ...

this.login = function(req, res){ 
     connection.acquire(function(err, con) { 
      con.query('SELECT * FROM users WHERE Email = "' + req.Email + '";', function(err, result) { 
       if(!err){ 
        if(bcrypt.compareSync(req.Password, result[0].Pass) == true){ 
         result[0].Pass = ""; 
         res.send(result[0]) 
         con.release(); 
        } 
       } else { 
        res.send(err) 
        con.release() 
       } 
      }); 
     }); 
    } 

погрешность я получаю ответ об ошибке в консоли, которая читает как этот

я получаю сообщение об ошибке в терминал, который читается следующим образом.

build.js: 1275 POST http://lavishweb.com/api/login Net :: ERR_CONNECTION_REFUSED

Не удается прочитать свойство 'запрос' неопределенной на /root/syn-tacticsolutions/api/users/users.js:38:13 в/корень/син-tacticsolutions/connection.js: 18: 7

И прежде чем вы говорите, что это связано с правами ... я назвал это внутри V-сервера

mysql -u Miguel -p 

Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 28 
Server version: 5.7.16-0ubuntu0.16.04.1 (Ubuntu) 

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> 

Любая помощь горе uld будет высоко оценен. Я искал всюду, чтобы узнать, почему это может не работать. Я действительно в тупике.

+1

Это не проблема nodejs: net :: ERR_CONNECTION_REFUSED находится на сетевом уровне. Можете ли вы сделать «telnet localhost 3306» с вашего сервера dev? – CFrei

+0

Он говорит, что не может подключиться к удаленному хосту: соединение отклонено –

+0

@MiguelCabrera изменить локальный адрес и сделать его IP-адресом –

ответ

0

Хорошо, ребята, я нашел проблему. Поэтому по какой-то причине localhost неверен при подключении к серверу базы данных, находящемуся в той же системе. То, что мне пришлось сделать, это создать пользователя для статического внешнего IP-адреса (не 127.0.0.1) моего удаленного сервера, а затем получить доступ к нему с помощью этого пользователя.

mysql -u root -p 
password: thepassword 

>create user 'user'@'ip' identified by 'thepassword'; 
>grant all on *.* to 'user'@'ip'; 
>flush privileges; 
>exit; 

this.init = function() { 
    this.pool = mysql.createPool({ 
    host: 'ip', 
    user: 'user', 
    password: 'thepassword', 
    database: 'table' 
    }); 
}; 

И все работает. Ура!!

+1

Это то, говоря о. 'user' @ '' отличается от 'user' @ 'localhost' или 'user' @ '%'. – Dave

Смежные вопросы