簡體   English   中英

在node.js中連接ENOENT /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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM