0

我需要用 PHP 连接到远程 mysql 数据库。

具体来说,我将其作为常量:define("DATABASE_SERVER", "localhost"); ...

$db = @mysql_connect(DB_SERVER, DB_USER, DB_PASS);

我想将该站点复制到我的本地计算机,但仍连接到主数据库。

我可以这样做吗?如果是这样,如何?我所拥有的只是 FTP 访问。

4

5 回答 5

3

您需要数据库的 IP/URL 并将其而不是本地主机。
您需要确保数据库配置允许远程连接/本地网络之外。
一旦你获得了数据库的 IP(应该由支持团队提供,如果它被支持),你就会知道。

如果您需要做的只是复制数据并在您的机器上本地构建它,这样您就不会破坏实时数据,请使用 PHPmyadmin 中的导出选项卡。我假设您没有太多数据。
PHPmyadmin->选择数据库(从左框架)->按导出TAB(顶部,右框架)。
从那里应该清楚。
您可以将其导出为 SQL 并在本地计算机上运行此 SQL。

于 2009-11-13T16:31:56.257 回答
2

我猜你的数据库服务器拒绝远程连接。如果您有 cPanel,则有一个名为“远程数据库访问”之类的部分,您可以在其中将它们启用到某些 IP 范围。

于 2009-11-13T16:30:45.027 回答
2

我建议您将有问题的数据库导出,然后在本地导入。这样,如果您搞砸了,您就不会破坏实时数据。

许多(如果不是大多数的话)托管服务提供商还提供像 phpMyAdmin 这样的数据库接口。您可以从那里导出数据库。

于 2009-11-13T16:33:49.343 回答
1

+1 gnud。您不应该将生产数据库用于开发工作,即使您可以将其配置为侦听公共 Internet 接口 (*) 上的外部访问。鼠标一滑,您就可以在重要的实时数据上涂鸦。相反,您应该在自己的独立开发服务器上工作,当您工作和测试时,您可以将代码更改推送到实时服务器。

(*:这本身就是一个非常糟糕的主意:如果密码太弱,或者您正在运行具有可用漏洞的旧版本的 MySQL,您将很快被自动探针攻击。)

您通常会使用该mysqldump dbname > dbdump.sql命令从 shell 导出数据库,然后通过管道将其导入到本地服务器上mysql dbname < dbdump.sql。您可以使用的服务器上可能还安装了一个 MySQL 管理 Web 界面。但是,如果您只有 FTP,那么您并没有真正获得进行开发工作所需的工具。看看您是否可以获得一个空的或虚拟的数据库来测试站点。

(更重要的是,FTP 是一项令人讨厌的业务......真的在这个世纪你应该使用 SFTP。)

于 2009-11-13T16:58:31.757 回答
0

最简单的方法是DATABASE_SERVER定义为database(或同样有意义的东西)并在您的主机文件中放置一个条目。在您的本地机器上,这可以指向远程地址,在服务器上,这将指向 127.0.0.1。

define('DATABASE_SERVER', database);

在 Windows 上,您的站点文件是:

c:\windows\system32\drivers\etc\hosts

和:

database <remote_ip>

Linux:

/etc/hosts

和:

database 127.0.0.1

旁注:您的远程数据库是生产数据库吗?如果是这样,您不应该真正使用远程数据库进行开发工作,除非您使用单独的开发数据库 - 即使那样我也不会冒恶意开发查询占用远程数据库资源的风险。

更新: Doh,错过了您仅限于 FTP 访问。

于 2009-11-13T16:39:54.907 回答