![](/img/trans.png)
[英]error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' -- Missing /var/run/mysqld/mysqld.sock
[英]Error connect ENOENT /var/run/mysqld/mysqld.sock in node.js
我在Windows上運行蘇格蘭威士忌箱(無家可歸的LAMP堆棧)。
我沒有問題,通常可以通過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進入了無業游民的行列,並驗證了mysqld.sock實際上在那里,並且已在/etc/mysql/my.cnf中正確設置了它。 跳過網絡也處於關閉狀態。
我還嘗試將bind-address設置為0.0.0.0,並完全注釋掉bind-address,重命名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);
});
我該如何解決?
所以我設法解決了。
您所要做的就是在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);
});
您需要編輯的文件是/etc/mysql/mysql.conf.d/mysqld.cnf
注釋掉此文件中的bind-address行,應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.