【问题标题】:How to connect to MySQL using ssh tunnel with perl如何使用带有 perl 的 ssh 隧道连接到 MySQL
【发布时间】:2011-05-10 23:33:18
【问题描述】:

我正在使用 MySQL 的 Amazon EC2 实例,需要修改我的 perl 脚本以使用 ssh 隧道(而不是普通的旧主机名:端口)连接到数据库。任何帮助表示赞赏

谢谢

【问题讨论】:

  • 这不是一个真正的 Perl 问题 - 只需设置一个 ssh 隧道,以便明显的 mysql 位置是您的隧道的地址。
  • 如果您找到对您有帮助的答案,请点击旁边的勾号,以便其他人日后找到正确答案。

标签: mysql ssh amazon-ec2 ssh-tunnel


【解决方案1】:

打开隧道:

ssh -fNL 3306:localhost:3306 myname@myhost

然后连接到 localhost:3306

【讨论】:

    【解决方案2】:

    在建立 SSH 隧道连接后,仅主机名不同,此时它是 127.0.0.1 (localhost)

    【讨论】:

      【解决方案3】:

      MySQL 尝试映射 localhost[:port] 连接以使用本地 (UNIX) 套接字;您应该使用 127.0.0.1 作为 tcp/ip 套接字。

      【讨论】:

        【解决方案4】:

        我不知道 ssh 但你可以encrypt connections between your application and your DB Instance using SSL,这对你来说就足够了吗?

        【讨论】:

        • 不完全一样。连接将被加密,但您仍然会暴露您的 mysql 端口。
        • 我实际上并不关心加密,但亚马逊 AWS 允许远程机器仅通过 SSH 隧道连接到他们的 EC2 实例。例如,我能够使用工作台的连接选项(TCP/IP over ssh)将本地机器上的 mysql 工作台连接到 EC2 mysql 服务器,其中必须指定 ssh 主机名(带密钥对)和数据库主机名(在带有用户名/密码的本地主机上)分别。我猜应该有与 perl dbi connect 类似的机制。
        • 默认情况下,我认为只有端口 22 对 ec2 实例开放。您可以通过在ec2管理控制台中更改安全组来打开Mysql端口。
        【解决方案5】:

        关于克里斯回答的一个注意事项 - 在某些设置上,“localhost”和“127.0.0.1”会有所不同。就我而言, localhost 不起作用,而 127.0.0.1 确实可以完美运行。

        【讨论】:

          猜你喜欢
          • 2014-03-20
          • 2014-03-21
          • 1970-01-01
          • 2018-04-05
          • 2019-03-09
          • 1970-01-01
          • 2018-10-06
          相关资源
          最近更新 更多