通过 SSH 隧道的 MySQL 连接 - 如何指定其他 MySQL 服务器?

2021-11-20 00:00:00 ssh-tunnel mysql

我有大约 50 个数据库都设置在不同的主机名上,要求我通过 SSH 隧道连接到它们.

I've got ~50 databases all set up at different host names, with the requirement that I connect to them through an SSH tunnel.

例如:

  • SSH 主机在 ssh.example.com

MySQL 主机位于 mysql1.example.com

MySQL host at mysql1.example.com

我已经设法使用 autossh(运行 Debian 的网络服务器)创建了隧道,但我似乎无法弄清楚如何连接到超出"SSH 隧道的特定 MySQL 主机名.

I have managed to create the tunnel using autossh (web server running Debian), but I can't seem to figure out how to connect to a specific MySQL hostname "beyond" the SSH tunnel.

输入 lsof -i -n |egrep '\<ssh\>' 确认隧道正在工作(发送端口 3307 到 ssh.example.com 端口 3306)

Typing lsof -i -n | egrep '\<ssh\>' confirms that the tunnel is working (sends port 3307 to ssh.example.com port 3306)

因此,当我尝试 mysql -h 127.0.0.1 -P 3307 时,连接被拒绝.不太奇怪,因为它不是 MySQL 服务器.

So when I try mysql -h 127.0.0.1 -P 3307 I get Connection refused. Not too weird since it's not an MySQL server.

我对你们的问题:

如何在创建 SSH 隧道后指定 mysql1.example.com 主机?我试过到处搜索,但似乎无法弄清楚.

How do I specify the mysql1.example.com host AFTER creating the SSH tunnel? I've tried searching everywhere but can't seem to figure it out.

推荐答案

解决了!事情是在创建隧道本身时连接到正确的服务器 - 应该已经看到了.

Solved it! The thing was to connect to the correct server when creating the tunnel itself - should've seen that one coming.

ssh -f user@ssh.example.com -L 3307:mysql1.example.com:3306 -N

然后 mysql -h 127.0.0.1 -P 3307 按预期工作.:)

Then mysql -h 127.0.0.1 -P 3307 worked as intended. :)

相关文章