跨机器登陆mysql-ssh隧道

有时我们需要登陆mysql,但是mysql-server可能对登陆做了ip授权,比如:mysql对A机器做了登陆授权,我们在这上边安装了php/python的对应model,从而可以直接使用php/python脚本来进行sql操作.  但是该台机器却没有安装mysql-client客户端!  此时如果我想在A机器上直接进行sql查询该怎么办呢?


最简单的:安装一个sql客户端. 

那有木有办法不安装呢?可以的,我们可以找一台安装有sql客户端的未进行ip授权的B机器来进行操作,  可是B机器毕竟没有ip授权,此时该如何操作呢?

实际有授权的是A机器,那我们可以建立一条B机器到A机器的ssh隧道,这样就可以在B机器上进行类似直接在A机器上进行的操作了.


ssh -fN -L<local-ip>:local-port:remote-ip:remote-port  ssh-user@ssh-ip

如上:

local-ip: B机器的ip

local-port: B机器的port

remote-ip: A机器的ip

remote-pory: A机器的port

ssh-user : A机器的用户名

shh-ip: A机器的ip

那么该条语句的作用就是:在B机器的指定ip/port 映射为A机器上要操作的指定ip/port  这样在B机器上对ip/port所做的操作就等同于在A机器上对映射的ip/port所做的操作


比如A机器上操作mysql的ip/port 是   12.12.12.34:3306

那么我们需要在B机器上执行:ssh -fN -L43306:12.12.12.34:3306  A-user@A-ip

这意味着:在B机器上对localhost:43306所做的操作就是  在A机器上对12.12.12.34:3306所做的操作一样


这样的话:我们要想在B机器上登陆mysql,只需要执行: mysql -h127.0.0.1 -P43306 -u** -p** 既可以登陆mysql


同理,ssh隧道的实际作用不止于此,也可以用于做http代理等.感兴趣的话可以查一下对应资料

展开阅读全文

没有更多推荐了,返回首页