当前位置:  开发笔记 > 编程语言 > 正文

在PHP中通过SSH连接到MySQL服务器

如何解决《在PHP中通过SSH连接到MySQL服务器》经验,为你挑选了1个好方法。

我读了一篇关于这个主题的帖子,我也想做同样的事,

我有远程linux机器上的数据库,我想使用ssh和php函数连接,(我目前正在使用ssh2库)我尝试使用mysql_connect,但它让我无法访问(虽然我已经授予权限)当我尝试使用此功能:

$connection = ssh2_connect('SERVER IP', 22);

ssh2_auth_password($connection, 'username', 'password');

$tunnel = ssh2_tunnel($connection, 'DESTINATION IP', 3307);

$db = mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 
                         'dbname', 3307, $tunnel)
    or die ('Fail: '.mysql_error());

我得到错误"mysqli_connect()期望参数6是字符串,资源给定",任何人都可以请帮助我



1> Tony Bargans..:

试试这个:

步骤1.

在remotehost.com上建立到MySQL服务器的隧道SSH连接

ssh -fNg -L 3307:127.0.0.1:3306 myuser@remotehost.com

这里的关键是-L,它表示我们正在进行本地端口转发.

本地端口Frowarding语法
语法有点棘手但可以看作:

:: myuser@proxy.com 

如果您对其他交换机感兴趣,它们是:-f(转到后台)-N(不执行远程命令)-g(允许远程主机连接到本地转发端口)

公钥认证,添加(-i)切换到上面:

-i/path/to/public/key

第2步.

现在告诉本地MySQL客户端通过步骤1中的SSH隧道设置连接到您计算机上的端口3307(通过ssh转发,连接到remotehost.com上的'127.0.0.1:3306').

mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase

客户端和服务器之间的数据交换现在通过加密的ssh连接发送,并且是安全的.

第3步.

现在将您的PHP应用程序连接到:


感谢Chris Snyder在http://chxo.com/be2/20040511_5667.html上的精彩文章

GUI工具

根据您的要求,另一种方法是使用具有SSH隧道支持的GUI MySQL客户端,例如http://www.sequelpro.com/或使用PuTTY设置端口转发.

更新1 今天,我回顾了一个可行的替代macOS GUI ssh隧道工具,称为安全管道,您可能会发现它很有用.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有