【问题标题】:How can I use SSH tunneling to connect to a remote MySQL server?如何使用 SSH 隧道连接到远程 MySQL 服务器?
【发布时间】:2014-05-03 13:37:47
【问题描述】:

我是第一次使用 SSH 隧道,所以我想了解如何配置它。

我有一个远程 Linux 服务器,它承载着我正在尝试连接的 MySQL 数据库。为了通过只识别本地数据库的软件直接访问 MySQL 数据库,我想 SSH 隧道是设置访问的正确方法,对吗?

现在,我正在尝试在我的“家庭”计算机上设置隧道,该计算机正在运行试图访问 MySQL 数据库的软件。我的第一个问题是这是反向隧道还是正常隧道?其次,是本地隧道还是远程隧道?

最后,据我了解,我的代码应该看起来像

ssh -L 8080:mylinuxserver.mycompany.com:22 myuser@mylinuxserver.mycompany.com

这是正确的吗?我的源端口是“22”,因为我使用的是 SSH,而我的目标端口是 8080(还是有更合适的端口)?

当我尝试使用上述代码时,我可以使用我的密码登录(因为我的密钥已经在 MyLinuxServer 中)但是当我 ping localhost:8080 时,它找不到主机。

我做错了什么?

【问题讨论】:

    标签: ssh remote-access tunneling


    【解决方案1】:

    我有一个远程 Linux 服务器,它承载着我正在尝试连接的 MySQL 数据库

    命令应该是:

    ssh -L 8080:localhost:3306 myuser@mylinuxserver.mycompany.com
    

    地点:

    1. 8080:是您工作站上的本地端口
    2. localhost:对应mylinuxserver.mycompany.com
    3. 3306localhost 上面的 MySQL 端口。

    然后(从您的工作站)连接到 MySQL:

    mysql -h 127.0.0.1 --port=8080 
    

    此外,ping localhost:8080 是错误的。 Ping 不能那样工作。

    【讨论】:

    • 就我而言,终端接受的端口为 mysql -h 127.0.0.1 -u root -p -P 8080;
    【解决方案2】:

    试试这个:

    ssh -f ssh_user@mylinuxserver.mycompany.com -L 3307:mysql1.example.com:3306 -N
    

    接下来,访问您尝试连接的 mysql:

    mysql -h 127.0.0.1 -P 3307
    

    【讨论】:

    • 它执行正确,但我仍然无法成功 ping 它,因为它找不到主机。与我在问题中提出的代码相同的问题。
    • 当我尝试运行mysql命令时,显示找不到该命令。
    猜你喜欢
    • 2016-11-18
    • 2016-02-13
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2017-09-27
    • 2020-09-30
    • 2020-07-05
    相关资源
    最近更新 更多