VPS 上的 MySQL 端口 3306 在远程不可见

VPS 上的 MySQL 端口 3306 在远程不可见

我是新手,正在将我的网站从共享主机迁移到运行 Ubuntu 16.04 的新虚拟专用服务器 (Linode) 上的基于名称的虚拟主机。Apache 正在运行。我已安装 MySQL 并创建了一个空数据库。我还没有防火墙(目前);iptables 显示空列表。

我创建了一个名为“jk”的 MySQL 用户,可从任何地方访问。您可以在此查询结果中看到它:

   mysql> select host, user from mysql.user;
   +-----------+------------------+
   | host      | user             |
   +-----------+------------------+
   | %         | jk               |
   | localhost | debian-sys-maint |
   | localhost | mysql.sys        |
   | localhost | root             |
   +-----------+------------------+
   4 rows in set (0.00 sec)

并且“netstat”表示端口 3306 正在从任何地方进行监听(查看第一个结果):

  jk@bird:~$ netstat -an
  Active Internet connections (servers and established)
  Proto Recv-Q  Send-Q  Local Address      Foreign Address     State      
  tcp        0       0  127.0.0.1:3306     0.0.0.0:*           LISTEN     
  tcp        0       0  0.0.0.0:22         0.0.0.0:*           LISTEN     
  tcp        0     244  45.56.81.181:22    24.4.251.228:58915  ESTABLISHED
  tcp6       0       0  :::80              :::*                LISTEN     
  tcp6       0       0  :::22              :::*                LISTEN 

Linode 上的一切看起来都很好(对我这个新手来说)。

但是当我尝试从我的 Mac 连接到它时,情况就不太好了。由于 DNS 仍然指向我的旧共享主机,我通过其数字 IPv4 地址指定我的 Linode 服务器。当我要求 macOS 的网络实用程序的端口扫描功能扫描我的 Linode 服务器上的端口 3306 时,它什么也没找到。为了验证我是否正确使用了此工具,我扫描了端口 22 和 80,发现它们按预期打开。同样,它说我的旧共享主机上的端口 3306 是开放的。

我的 Mac 上的 MySQL 客户端应用程序(Sequel Pro)证实了这个问题:

  MySQL said: Can't connect to MySQL server on ‘45.56.81.181’ (61)

可能出了什么问题?

答案1

您误读了 netstat 输出。

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

端口仅供以下用户使用本地主机(进程间通信)。

对于侦听器,“本地地址”表示正在侦听的地址。由于唯一可以连接到 127.0.0.1 的计算机是本地主机,因此其他任何人都无法连接到该端口。如果“本地地址”为 0.0.0.0 或 45.56.81.181,则侦听器分别绑定到任何网卡上的任何地址或 LAN 地址。

对于侦听端口,外部地址始终为 0.0.0.0:*(因为侦听器上没有其他方)。外部地址仅对现有连接有效(状态不是“侦听”)。

在您的 mysql 配置中,您必须将其配置为监听所有接口(0.0.0.0)或 LAN 接口。

有关配置 MySQL 进行网络访问的文档请参阅此处:http://dev.mysql.com/doc/refman/5.7/en/server-options.html

相关内容