在3个服务器星座中通过netcat进行Mysqldump



我有以下场景:

  • 服务器A:Mysql数据库服务器,仅通过Mysql连接(端口3306),无shell访问,无root
  • 服务器B:www前端服务器(nginx),无mysql/mysqldump;可以连接到服务器A,具有shell访问权限,没有root
  • 服务器C:具有shell访问权限的根服务器,mysql,mysqldump

有没有一种方法可以在服务器C上使用mysqldump从服务器a转储数据库?

您可以使用ssh登录到服务器B,通过隧道将mysql端口传输到服务器C,类似于

server_c$ ssh -L7777:server_a:3306 server_b
# keep that connection hanging for the sake of tunnel
server_c$ mysqldump --host=127.0.0.1 --port=7777

通过这种方式,您将最终连接到server_a:3306,在服务器C上运行客户端,通过服务器B进行隧道传输。"7777"只是一些随机的自由端口。

NGINX Plus r5具有TCP负载平衡功能,您可以使用或使用https://github.com/yaoweibin/nginx_tcp_proxy_module对于旧版本。在服务器B上,您可以执行以下操作:

stream {
    upstream backend {
        server a.example.com:3306;
    }
    server {
        listen 3306;
        proxy_pass backend;
    }
}

这将允许您在服务器C上使用mysql,而b.example.com:3306将代理您到服务器A。

最新更新