我已经编写了一个在本地连接到mysql数据库的php文件。现在,我想通过SSH连接到远程数据库。目前我的数据库的连接函数在php中如下:
$this->db = new mysqli(_SERVR_URL, _SERVR_USER , _SERVR_PASS, _SERVR_DB);
if ($this->db->connect_errno) {
echo "Failed to connect to MySQL: (" . $this->db->connect_errno . ") " . $this->db->connect_error;
}
else{
//echo "Successfully connected!! <BR><BR>";
}
我想只更改connect函数(上面),以便其余的代码仍可正常工作。我已经成功安装了phpseclib并且对安装php的ssh扩展不感兴趣,因为经过近5个小时的努力,这些扩展无法正常工作。 phpseclib正在工作,我认为这是因为当我使用require时它不会死。
但是,当我尝试开始使用ssh时,会抛出服务器错误:
$ssh = new Net_SSH1(myURL);
我通常通过SSH连接到服务器的方式是使用.pem文件。我可以获得一些指导:
答案 0 :(得分:4)
我认为你在这一点上运气不好。你可以使用ssh 您的PHP代码中的扩展名,或者您有权访问服务器 可以尝试在命令行上创建一个ssh隧道。
但是,您可能需要特殊权限才能执行此操作。它也是 看起来你没有ssh访问这个主机帐户。
duplicate由@jpm回答
@ lalafur Waage在Setting up tunneling 上发布了Connect to a MySQL server over SSH in PHP
this one用于@Sosy的隧道掘进
shell_exec(“ssh -f -L 3307:127.0.0.1:3306 user@remote.rjmetrics.com sleep 60 >> logfile”);
$db = mysqli_connect(’127.0.0.1′, ‘sqluser’, ‘sqlpassword’, ‘rjmadmin’, 3307);
答案 1 :(得分:1)
mysql扩展目前不支持此功能。修改扩展本身可能并不困难,但在那一点上,它必须是一个自定义的PECL扩展,充其量。这个想法在前一段时间在PHP Internals邮件列表中进行了讨论: