通过SSH查询远程Web服务器上的MySQL数据库

时间:2011-11-10 14:02:16

标签: php mysql ssh

我们有一个内部MySQL数据库,我们的客户服务部门用来做报价,我们的网站上有一个外部MySQL数据库供客户用来做报价。我有一份我写过的PHP报告,它给了我内部数据库的信息。现在我想修改报告以包含来自外部数据库的数据。我需要使用SSH连接连接到外部数据库。我一直在研究使用cURL或SSH2,但我不确定这两种方法是否正确。有没有人在之前在网络服务器上查询过SSH MySQL数据库,或者有人知道我需要做些什么来使这项工作?感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:1)

我实际上使用名为“Sequel Pro”的MySQL GUI客户端,它提供了通过SSH连接连接到MySQL的选项。这是完全可行的,但如果您可以选择在没有它的情况下连接到数据库(例如,您可以从主机的“外部”连接到它),您应该更喜欢这个。

我认为您可以通过SSH查询数据库的最简单方法是使用SSH端口转发,因此您将生成一个进程ssh user@host-that-has-the-db -L3306:localhost:3306,然后您将连接MySQL连接器本地主机。

SSH的-L参数指示它执行本地端口转发,因此SSH将侦听本地端口并将其接收的内容直接转发到另一端的指定远程主机/端口。显然我的例子在两端使用端口3306,但是可以根据需要进行更改(RTM有更多关于此内容)

答案 1 :(得分:0)

是的,您可以通过SSH从bash查询mysql,但这不是最佳和可扩展的方式。最好的解决方案是在生产服务器上创建REST Web服务。然后,您的内部系统将通过身份验证查询该远程服务。

答案 2 :(得分:0)

您从本地服务器上的某个可用端口到远程服务器上的mysql端口设置隧道:

ssh -L 3307:localhost:3306 someuser@remoteserver

这将创建一个监听本地系统上端口3307的隧道,该端口连接到远程服务器上的端口3306(MySQL)。

然后将您的PHP代码指向连接到端口3307而不是3306,它将通过隧道连接到远程服务器上的mysql。

相关问题