【问题标题】:Mysqldump through netcat in 3 server constellation3服务器星座中通过netcat进行mysqldump
【发布时间】:2015-02-23 08:50:49
【问题描述】:

我有以下场景:

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

有没有办法在服务器 C 上使用 mysqldump 从服务器 A 转储数据库?

【问题讨论】:

    标签: mysql shell mysqldump netcat


    【解决方案1】:

    您可以使用 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”只是一些随机的空闲端口。

    【讨论】:

      【解决方案2】:

      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 用于将您代理到服务器 A 的 b.example.com:3306

      【讨论】:

      • 您好汉斯,感谢您的解决方案。我无法访问 NGinx 配置文件。
      猜你喜欢
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多