gpt4 book ai didi

mysql - 远程数据库错误: connect ECONNREFUSED (node-mysql/UBuntu/VirtualBox)

转载 作者:行者123 更新时间:2023-11-29 21:37:25 30 4
gpt4 key购买 nike

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

  1. 当位于同一虚拟机上时,NodeJS 到 MySQL 可以很好地协同工作。将 MySQL 移至其自己的虚拟机后,问题才开始出现。
  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'
    });

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

更新我的帖子:

自从我第一次发布这篇...呃..帖子以来,我学到了一些东西,并在这个过程中取得了一些渐进的进展:

  1. 默认情况下,MySQL 仅监听本地主机流量。为了让它监听外部流量,您必须禁用 my.cnf 文件中的监听/绑定(bind)地址。所以,我这样做了,然后重新启动了 MySQL。
  2. 完成此操作后,我运行了“netstat -tlnp”,显示了一条新行,指示某些内容(肯定是 MySQL)正在监听 0.0.0.0:3306,而在我更改配置并重新启动 MySQL 之前,该内容并不存在。
  3. 然后,我再次从 NodeJS VM 执行查询,并收到了不同的错误(嘿,我将将此视为增量进度的标志):

    " Error: Cannot enqueue Query after fatal error."

这就是我现在的处境。和以前一样,如果您有任何关于我下一步可能尝试的想法,我将不胜感激。感谢您的帮助!

最佳答案

好的,我解决了剩下的问题。上面的错误(Error: Cannot enqueue Query after fatal error.)是由于我没有重新启动 NodeJS 服务器,所以它有旧的连接对象。当我重新启动 NodeJS 服务器后,我收到了一个新错误:

ER_HOST_NOT_PRIVILEGED

我收到此错误的原因很简单,因为对于给定用户,MySQL 必须知道该用户连接的主机(因为 MySQL 的有效连接凭据是用户 ID/密码/主机的组合)。一旦我更新了我的用户帐户以与适当的允许的远程主机进行远程连接,一切都工作正常!

关于mysql - 远程数据库错误: connect ECONNREFUSED (node-mysql/UBuntu/VirtualBox),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34813765/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com