我的本地机器上有XAMPP,能够毫无问题地运行PHP脚本,并且能够完美地连接到我的localhost mysql DB。
我有兴趣使用我的本地脚本从实时MySQL数据库(使用Media Temple在线其他地方托管)中提取数据。我们的代码的某些方面我们不希望发布到Web目录以用于可能的安全目的。这可能吗?
注意:要使用桌面软件(如Navicat)在本地访问此数据库,当然需要使用SSH隧道。我们不允许直接root访问我们的数据库。
答案 0 :(得分:1)
是的,只需在连接时指定远程MySQL实例的主机名和端口。
答案 1 :(得分:1)
当然,您可以使用mysql_connect()函数指定主机,端口,凭据等。有关详细信息,请参阅:http://us3.php.net/mysql_connect。
答案 2 :(得分:1)
是的,这是可能的。
您需要在托管数据库上设置适当的访问权限,即在Media Temple上。
请参阅MYSQL用户手册(http://dev.mysql.com/doc/refman/5.5/en/adding-users.html)中的此片段
CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost';
警告授予所有权限可能会造成安全隐患。
在上面的示例中,您将使用运行脚本的PC的IP地址(即XAMPP)替换“localhost”。请记住,如果您没有静态IP地址,则可能需要指定通配符。这可能很危险,但如果你必须使用%符号。
所以'localhost'会变为'%'。为了获得额外的安全性,在这种情况下,您应该更改用户获得的priv,只有在可能的情况下才将其设置为只读?
最后,在mysql_connect()函数中指定详细信息。主机,数据库名称,用户名和密码。 http://php.net/manual/en/function.mysql-connect.php
答案 3 :(得分:1)
您可以通过网络连接到mysql,并且可以指定连接到远程服务器的主机名和端口。但是,出于安全原因,MySQL通常配置为不接受来自本地网络外部的连接。我不建议将您的服务器打开到来自Internet的连接...如果您这样做,您至少应该通过SSL加密您的连接。
老实说,我只是建议将管理工具部署到您的服务器,并确保他们使用良好的身份验证系统和HTTPS。将你的mysql服务器暴露在世界上以避免服务器上的安全问题感觉有点像关闭你的门,因为你害怕有人可能会选择锁定。
答案 4 :(得分:1)
如果您必须通过SSH隧道,这可能很困难。以前有一些关于该主题的问题,start here。您可以在PHP中设置SSH隧道,该隧道可以承载连接。尝试启动here。
请注意,如果您为每个数据库请求建立一个SSH隧道,那么您将会产生 lot 的开销。保持SSH隧道尽可能持久是重要的,但即使这样,也可能会有一些明显的开销。