2017-10-10 40 views
0

ノードjsを使用して、残りの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の参照から、私もコメントしてみてくださいアウトバインドアドレスが、成功もありません。この問題を解決する方法。

+0

あなたのソケットパスが間違っていると思います。最初に '' require( 'path') ''で解決してください。 – Crowes

+0

@crowesリモートサーバーmy.cnfファイルがsocket = '/var/run/mysqld/mysqld.sock'の同じパスを表示します – sasuke

答えて

1

リモートMySQLサーバに接続する場合は、socketPathオプションを省略してください。これは、MySQLサーバがアプリケーションと同じホスト上で実行されている場合にのみ意味があるためです。

これは、MySQLサーバーがTCP経由の接続を許可するように設定されている必要があります。

+0

ソケットパスの接続が拒否されましたエラー:エラー:connect ECONNREFUSED xx.xx.xx.xxx: 3306 ' – sasuke

+0

@asasukeだから私は書いた:_ "これは、MySQLサーバーがTCP経由で接続を許可するように設定されている必要があります。"また、あなたのサーバーはポート3306への着信接続を許可する必要があります外の世界への港を開くことのセキュリティの意味について)。 – robertklep

関連する問題