【问题标题】:Ip4address not working for node-mysql connection ubuntuIp4address 不适用于 node-mysql 连接 ubuntu
【发布时间】:2015-05-21 23:51:25
【问题描述】:

我可以使用 localhost 和我的 IP4 地址打开 phpmyadmin:

  1. http://localhost/phpmyadmin

  2. http://192.168.3.72/phpmyadmin

  3. http://127.0.0.1/phpmyadmin/

以上所有作品

但是当我尝试将 IP4 地址应用到这个时

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret'
});

参考:https://github.com/felixge/node-mysql/#introduction

我得到错误:

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  fatal: true }

我做错了什么?

使用的端口有:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5939          0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN     

我试过netstat -nlt | grep 3306

但我得到的是空白输出而不是:

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

尝试使用此帖子时: Remote Connections Mysql Ubuntu

但是当尝试使用:netstat -tulpn | grep :3306

我得到的输出为:

tcp        0      0 192.168.3.72:3306       0.0.0.0:*               LISTEN      -  

有人可以帮忙吗...

【问题讨论】:

  • phpMyAdmin 只是一个 MySQL 客户端,它在让 Node 连接到服务器方面没有任何作用。您必须配置 MySQL 服务器以侦听外部 IP 地址,而您显然没有。
  • 感谢@Alvaro - 当我从外部 telnet 尝试时:无法解析 192.168.3.72:3306/telnet:名称或服务未知。所以我可以知道如何配置 MySQL 服务器 plz

标签: mysql node.js node-mysql


【解决方案1】:

您是否尝试使用“127.0.0.1”而不是“localhost”?

【讨论】:

  • localhost 应该解析为 127.0.0.1,但这可能值得一试。
  • 127.0.0.1 适用于 mysql 连接,因为它相当于 localhost。但我想在外部共享 mysql db。我想在局域网中与我的 IP4 地址本身共享它,对吗?它不工作:(
  • 您是否尝试过局域网中其他计算机的“telnet 192.168.3.72:3306”?问题可能是 3306 端口拒绝远程处理
  • @Tim Biegeleisen - 感谢您的回复。我用更清晰的信息编辑了我的问题。如果这有助于解决我的问题,请您检查一下吗
【解决方案2】:

您可能尝试使用错误的端口连接到 MySQL。要找出 MySQL 正在监听的端口,您可以这样做:

Windows(来自 MySQL):
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

Unix
netstat -tln

一旦您确定了正确的端口(默认为 3306),您可以在尝试从 Node 连接时显式指定端口:

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  port: 3306
});

【讨论】:

    【解决方案3】:

    我终于能够解决问题了:-)

    1. 我使用sudo su 以root 身份登录
    2. 已编辑 subl /etc/mysql/my.cnf 并将 bind-address 替换为我的 IP4 地址
    3. 运行:service mysql restart

    最后它给了我结果:

    mysql stop/waiting
    mysql start/running, process 12210
    

    现在我可以使用外部来源的 IP4 地址成功登录了。

    谢谢大家:-)

    【讨论】:

      猜你喜欢
      • 2013-12-02
      • 2017-09-28
      • 2016-03-21
      • 1970-01-01
      • 2020-10-12
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      相关资源
      最近更新 更多