2016-11-06 57 views
2

我在Windows上運行scotch box(一個無用的LAMP堆棧)。錯誤connect node.js中的ENOENT /var/run/mysqld/mysqld.sock

我沒有問題,通過PHP或Navicat正常連接到MySQL。

,但我試圖連接到它Node.js,我得到錯誤「Error connecting to MySQL: Error: connect ECONNREFUSED 127.0.0.1:3306

從我的周圍搜索明白看來我需要設置套接字路徑

但當我這樣做時,我得到的錯誤「Error connecting to MySQL: Error: connect ENOENT /var/run/mysqld/mysqld.sock

我100%確定這是正確的套接字路徑。我已經SSH進入vagrant並驗證mysqld.sock實際上是否存在,並且已在/etc/mysql/my.cnf中正確設置。跳過網絡也關閉。

我也嘗試將綁定地址設置爲0.0.0.0,並完全註釋掉綁定地址,重命名mysqld.sock並重新啓動mysql服務器,以便它再次重新創建mysqld.sock。還嘗試禁用我的防火牆(無論如何都允許node.js)並重新安裝MySQL。

這都不是工作和錯誤仍然是相同的:「Error connecting to MySQL: Error: connect ENOENT /var/run/mysqld/mysqld.sock

這是我到目前爲止的代碼:

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : 'root', 
    database : 'test', 
    socketPath : '/var/run/mysqld/mysqld.sock' 
}); 

connection.connect(function(err) { 
    if (err) { 
    console.error('Error connecting to MySQL: ' + err.stack); 
    return; 
    } 
    console.log('connected as id ' + connection.threadId); 
    }); 

我該如何解決這個問題?

+0

不應該將'socketPath'路徑設置爲:''/ var/lib/mysqld/mysqld.sock'而不是'/ var/run/mysqld/mysqld.sock'? – Cyclonecode

+0

我看到我粘貼了錯誤的錯誤。本來我認爲它是/ var/lib,然後我將它確認爲/ var/run /。要100%清除,我現在得到的錯誤是'錯誤:連接ENOENT/var/run/mysqld/mysqld.sock''。對困惑感到抱歉。 –

+0

我使用'sudo find/-type s'搜索scotchbox機器上的mysql套接字,似乎套接字位於'/ run/mysqld/mysqld.sock' – Cyclonecode

回答

0

所以我設法解決它。

您只需在my.cnf中註釋掉bind-address並使用站點的IP連接即可。

在我的情況下,它是192.168.33.10(這是默認設置爲scotchbox的設置)。

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : '192.168.33.10', 
    user  : 'root', 
    password : 'root', 
    database : 'test' 
}); 

connection.connect(function(err) { 
    if (err) { 
    console.error('Error connecting to MySQL: ' + err.stack); 
    return; 
    } 
    console.log('connected as id ' + connection.threadId); 
    }); 
+0

無法正常工作 – sasuke

0

你需要編輯是/etc/mysql/mysql.conf.d/mysqld.cnf

註釋掉綁定地址線在該文件中,你應該是文件精細。