使用PHP进行远程MySQL连接

3

我正在尝试使用php脚本登录到远程mysql数据库。

该数据库已开放远程连接,我可以使用mysql管理程序或openoffice(ODBC)从家用PC连接。

我已经在两个不同账户上尝试运行该脚本,这两个账户位于同一web主机上但与该数据库不同,但都没有成功。

此外,该脚本无法从这两个账户中的一个连接到另一个账户上的数据库。

似乎托管该脚本的服务器上的php设置不允许连接到远程数据库,即使该数据库是由同一Web主机托管。该脚本只是超时了。

有什么想法吗?


5
我会联系你的网络主机。 - Daniel A. White
从安全角度来看,可能会阻止出站连接,请参考丹尼尔·怀特的评论。 - Arend
3个回答

5

2

该数据库允许远程连接

这将会带来严重的安全问题。数据库应该永远不直接暴露在互联网上。事实上,最近发现了一个影响MySQL、MariaDB和Percona的漏洞,这个漏洞可以轻松地被攻击者利用。

如果你可以从家里连接到该数据库,那么说明没有主机白名单,只是你无法连接的机器存在路由问题或防火墙配置阻止了此类访问。这很不可能与PHP配置有关。

一旦禁用了目标数据库的远程访问,解决问题的正确方法是使用VPN或SSL端口隧道。


远程连接实际上是非常有用的东西。你可以为多个应用程序使用同一个数据库,这是非常有用的。当然这样做存在危险,但如果你正确配置你的设置(首先是白名单),那么就没有危险了。 - Nikola K.
是的,这很危险:http://www.theregister.co.uk/2012/06/11/mysql_mariadb_password_flaw/ - symcbean

1
我不确定,但有一种叫做SQL安全模式的东西。然后'localhost:3306'始终用作与之连接的服务器。
@Daniel是正确的:您应该联系您的主机,或检查此配置值是否在您的phpinfo中设置。

我正在等待托管公司的回复,但同时我已经检查了sql.safe模式是否关闭。 - Ian
一个解决方法是在mysql服务器上创建自己的php API。因此,实际包含要连接的mysql服务器的服务器应该包含api代码。然后,您可以使用某种访问令牌从其他php服务器进行Curl请求。 - RTB
@lan 如果我的回答有帮助,请接受它,这样其他人也可以从中学习。如果没有帮助,我还能怎么帮你呢? - RTB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接