我读了一篇关于这个主题的帖子,我也想做同样的事,
我有远程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.
在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隧道工具,称为安全管道,您可能会发现它很有用.