通过ssh隧道访问mysql

1 篇文章 0 订阅

我的机器可以连接服务器A,A可以访问服务器B上的mysql,但是我的机器不能访问B,所以我需要建立一个我本地机器到服务器A的ssh隧道来访问服务器B上的mysql。

理一下思路:

1.我要ssh的服务器是111.112.113.114,端口是5122,账户名是wz。

2.然后我ssh到111.112.113.114之后要访问的mysql服务器地址是:192.168.3.51,端口号是3306 。

3.我打算把这个ssh隧道绑定到我本地的3307端口。

好了,搞明白之后我们开始写命令:

andy@AndyMacBookPro:/usr/local/webdata/andy/shop/jd/job$ ssh -fN -L3307:192.168.3.51:3306 -p5122 wz@111.112.113.114
wz@111.112.113.114's password:
andy@AndyMacBookPro:/usr/local/webdata/andy/shop/jd/job$ lsof -i:3307
COMMAND  PID USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
ssh     1114 andy    5u  IPv6 0xaed4b8ceeaf7e51      0t0  TCP localhost:opsession-prxy (LISTEN)
ssh     1114 andy    6u  IPv4 0xaed4b8cfd6dcef1      0t0  TCP localhost:opsession-prxy (LISTEN)
andy@AndyMacBookPro:/usr/local/webdata/andy/shop/jd/job$

可以看到最后已经建立了两个隧道,命令成功!

其中ssh的语法是这样的:

ssh -fN -L(要绑定到的本地端口):(服务器B的Host):(服务器B上要访问的端口号) -p(服务器A的端口,默认为22) (服务器A的账户):(服务器A的Host)

感谢以下资料:
http://blog.csdn.net/nrc_douningbo/article/details/18618311

之后我们就可以写php代码来通过ssh隧道来访问那台无法直接连接的mysql服务器了,我这里使用的是medoo这个好东西:

ini_set('memory_limit','256M');

error_reporting(1);
set_time_limit(0);

$medoo = '/usr/local/webdata/github/Medoo/medoo.php';
require $medoo;
$database = new medoo([
    'database_type' => 'mysql',
    'database_name' => 'monitor',
    'server' => '127.0.0.1',
    'username' => 'myname',
    'password' => 'mypassword',
    'port' => '3307',
]);

$database->query("set names utf8;");

$sql = 'show tables';
$data = $database->query($sql)->fetchall();
echo '<pre>';var_dump($data);exit;

经验证可以访问成功。另,以上的server如果写成localhost是会报错的,要设置为127.0.0.1才可以。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值