通过 SSH 隧道的 MySQL 连接 - 如何指定其他 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. :)
相关文章