远程DB错误:连接ECONNREFUSED(node-mysql / UBuntu / VirtualBox)

时间:2016-01-15 14:53:07

标签: mysql node.js virtualbox ubuntu-14.04

我在VirtualBox上运行了两个独立的Ubuntu VM。我收到错误"远程数据库错误:连接ECONNREFUSED"。以下是一些背景信息:

  1. 当共同位于同一个VM上时,NodeJS与MySQL一起工作正常。只有在将MySQL移动到自己的VM后才会出现问题。
  2. 虚拟机在VirtualBox中设置为内部网络。它们有自己的静态IP,两个虚拟机可以互相ping通IP地址。
  3. 当我第一次收到错误时,指示nodeJS正在端口3306上尝试连接("错误:连接ECONNREFUSED 192.168.1.69:3306")。然后,我在创建连接对象时添加了端口选项("端口:' 3306'),但这并没有解决问题。
  4. 接下来,我看到一个线程建议通过运行(netstat -ln | grep mysql)查看mySQL正在侦听的端口,我得到的结果是" unix 2 [ACC] STREAM LISTENING 1831 /var/run/mysqld/mysqld.sock"。所以,既然它说是在1831年监听,我将连接创建代码中的端口切换到下面:

    qvar connection = mysql.createConnection({
    host     : '192.168.1.69',
    port     : '1831',
    user     : 'root',
    password : 'vinson',
    database : 'pilot',
    stringifyObjects: 'true'
    });
    
  5. 然而,

    ,我仍然遇到同样的错误。

    更新我的帖子:

    自从我第一次发布这篇文章以来,我已经学到了一些东西,并在此过程中取得了一些进步:

    1. 默认情况下,MySQL仅侦听localhost流量。为了让它监听外部流量,您必须在其my.cnf文件中禁用侦听/绑定地址。所以,我这样做了,然后重新启动了MySQL。
    2. 一旦我这样做了,我就跑了#34; netstat -tlnp&#34 ;,一个新行dsiplayed表示某些东西(肯定是MySQL)正在监听0.0.0.0:3306,而且在我更改配置之前就没有了并重新启动MySQL。
    3. 然后,我再次从NodeJS VM执行了一个查询,我得到了一个不同的错误(嘿,我将此作为增量进度的标志):
        

      "错误:致命错误后无法将查询排入队列。"

    4. 这就是我现在所处的位置。和以前一样,对于我接下来会尝试的任何想法,我将不胜感激。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

好的,我弄明白了其余的问题。上面的错误(错误:致命错误后无法排队查询。)是因为我没有重新启动我的NodeJS服务器,所以它有旧的连接对象。一旦我重新启动NodeJS服务器,我就遇到了一个新错误:

  

ER_HOST_NOT_PRIVILEGED

我收到此错误的原因仅仅是因为对于给定的用户,MySQL必须知道该用户从哪个主机连接(因为MySQL的有效连接凭证是userId / password / host的组合)。一旦我使用适当的允许远程主机更新了我的用户帐户以进行远程连接,一切正常!