错误连接node.js中的ENOENT /var/run/mysqld/mysqld.sock

时间:2016-11-06 23:39:26

标签: mysql node.js

我在Windows上运行scotch box(一个流浪汉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%确定这是正确的套接字路径。我已经连接到vagrant并验证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);
   });

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

所以我设法解决了。

您所要做的就是在my.cnf中注释掉bind-address并使用网站的IP进行连接。

在我的情况下,它是192.168.33.10(这是scotchbox默认设置的内容)。

if(isset($_POST['nombre']))

答案 1 :(得分:0)

您需要编辑的文件是 /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉此文件中的 bind-address 行,你应该没问题。