因此,我们办公室某处有一台运行 MySQL 的古老旧服务器。我可以使用以下方法进行远程连接:
# mysql -u someuser -p -h ancientserver.domain.com
我看到了期望的表格。但是,当我像这样通过 ssh 连接到服务器时:
# ssh [email protected]
然后运行:
# ps -ef | grep mysql
我没有看到 mysql 服务器进程。其他探索确认未安装 mysql 服务器 ancientserver.domain.com。
这个 ancientserver.domain.com 是否可能被用作代理 - 只是将 MySQL 请求传递到另一台服务器?如果是这样,我如何确定安装 MySQL 服务器的实际服务器的 IP?
连接后,我运行了:
mysql> @@hostname
并且主机名确实与ancientserver.domain.com不同。
答案1
我很想在你的客户端上运行 tcpdump,看看你的客户端是否正在连接ancientserver.domain.com
。如果是,则连接到该客户端,然后再次运行 tcpdump。看看你是否正在进行某种端口转发或隧道连接。数据包捕获可能可以给你一些提示。
tcpdump -qni any port 3306 # watch for port 3306 traffic on any interface.
如果您和该主机之间有任何防火墙或路由器,请检查它们以查看您的数据包在到达指定目的地之前是否被重定向。如果发生这种情况,则指定目的地上的 tcpdump 应该为空。
检查你的 iptables 规则iptables -nL -t nat
。查找任何看起来像是简单 tcp 代理的东西。netstat 命令 @knowhy 应该可以做到这一点。
答案2
您可以使用netstat -tulpn | grep 3306
来识别使用 mysql 端口的进程3306
。
有一个MySQL 代理但我的猜测是 MySQL 进程正在以不同的名称运行,这就是您无法通过找到它的原因ps
。