2017-10-10 68 views
0

我試圖使用節點js從我的rest API連接來自另一個測試服務器 的遠程服務器MySQL數據庫。無法連接mysql nodejs

我的數據庫connection.js

var mysql = require('mysql'); 

var poolConnection = mysql.createPool({ 
    connectionLimit : 100, 
    host   : 'xx.xx.xx.xxx', 
    port   : 3306, 
    user   : 'testuser', 
    password  : 'test123', 
    socketPath  : '/var/run/mysqld/mysqld.sock' 
}); 

exports.query = function(sql,args,callback){ 
    poolConnection.query(sql,args,callback);  
} 

在試圖逃離我的API我得到這個錯誤的查詢:

{ Error: connect ENOENT /var/run/mysqld/mysqld.sock 
at Object.exports._errnoException (util.js:1020:11) 
at exports._exceptionWithHostPort (util.js:1043:20) 
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1090:14) 
---------------------------- 
code: 'ENOENT', 
errno: 'ENOENT', 
syscall: 'connect', 
address: '/var/run/mysqld/mysqld.sock', 
fatal: true } 

許多其他StackOverflow的參考,我也試評out綁定地址,但也沒有任何成功。如何解決這個問題呢。

+0

你的套接字路徑是錯誤的,我假設。嘗試先用「require('path')」來解決它。 – Crowes

+0

@Crowes遠程服務器my.cnf文件顯示相同的路徑爲套接字='/var/run/mysqld/mysqld.sock' – sasuke

回答

1

對於到遠程MySQL服務器的連接,請忽略socketPath選項,因爲只有當MySQL服務器與應用程序在同一主機上運行時纔有意義。

這確實要求MySQL服務器設置爲允許通過TCP進行連接。

+0

但沒有套接字路徑獲取連接拒絕錯誤'錯誤:連接ECONNREFUSED xx.xx.xx.xxx: 3306' – sasuke

+0

@sasuke這就是爲什麼我寫道:_「這確實需要MySQL服務器設置爲允許通過TCP連接。」_另外,您的服務器需要允許傳入連接到端口3306(這也意味着您必須考慮關於向外界開放港口的安全影響)。 – robertklep