我正在尝试远程设置 mysql。我遵循了许多指南,例如这,最后我使用 nmap 查看了哪些端口是开放的。
当我使用笔记本电脑时,nmap -P0 <server>
出现:
Nmap scan report for <> (ip.address.here)
Host is up (0.054s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
因此它没有显示端口 3306 已打开。
但是在我的服务器(Ubuntu 14.04)上,如果我运行,nmap -P0 localhost
我会得到以下结果:
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00064s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
443/tcp open https
3306/tcp open mysql
这意味着端口是开放的。是什么导致了差异?(诚然,这是我第一次使用 nmap)。这是我无法连接到 mysql 服务器的原因吗?
此外,我的笔记本电脑(使用 Linux 子系统的 Windows)telnet <host> 3306
出现错误,提示远程资源不可用。
答案1
您的笔记本电脑上的报告nmap
包含以下行:
未显示:997 个已过滤端口
这里,已过滤表示防火墙阻止了除 22、80 和 443 之外的所有端口的访问。这与nmap
在服务器本身上运行时的输出形成对比:
未显示:995 个关闭的端口
在这种情况下,关闭只是意味着没有进程在监听 995 个测试端口。
防火墙可以在服务器本身上运行(如果在 GNU/Linux 系统上运行,可以通过运行来检查iptables -L
),或者可以在某个中间网关上运行。
如果您需要外部访问 MySQL,则需要配置防火墙以允许外部访问端口 3306。我还建议您将其配置为仅允许从您自己的 IP 地址(或您的 ISP 的 IP 地址)进行访问自治系统(AS)。