我需要用 PHP 连接到远程 mysql 数据库。
具体来说,我将其作为常量:define("DATABASE_SERVER", "localhost"); ...
$db = @mysql_connect(DB_SERVER, DB_USER, DB_PASS);
我想将该站点复制到我的本地计算机,但仍连接到主数据库。
我可以这样做吗?如果是这样,如何?我所拥有的只是 FTP 访问。
我需要用 PHP 连接到远程 mysql 数据库。
具体来说,我将其作为常量:define("DATABASE_SERVER", "localhost"); ...
$db = @mysql_connect(DB_SERVER, DB_USER, DB_PASS);
我想将该站点复制到我的本地计算机,但仍连接到主数据库。
我可以这样做吗?如果是这样,如何?我所拥有的只是 FTP 访问。
您需要数据库的 IP/URL 并将其而不是本地主机。
您需要确保数据库配置允许远程连接/本地网络之外。
一旦你获得了数据库的 IP(应该由支持团队提供,如果它被支持),你就会知道。
如果您需要做的只是复制数据并在您的机器上本地构建它,这样您就不会破坏实时数据,请使用 PHPmyadmin 中的导出选项卡。我假设您没有太多数据。
PHPmyadmin->选择数据库(从左框架)->按导出TAB(顶部,右框架)。
从那里应该清楚。
您可以将其导出为 SQL 并在本地计算机上运行此 SQL。
我猜你的数据库服务器拒绝远程连接。如果您有 cPanel,则有一个名为“远程数据库访问”之类的部分,您可以在其中将它们启用到某些 IP 范围。
我建议您将有问题的数据库导出,然后在本地导入。这样,如果您搞砸了,您就不会破坏实时数据。
许多(如果不是大多数的话)托管服务提供商还提供像 phpMyAdmin 这样的数据库接口。您可以从那里导出数据库。
+1 gnud。您不应该将生产数据库用于开发工作,即使您可以将其配置为侦听公共 Internet 接口 (*) 上的外部访问。鼠标一滑,您就可以在重要的实时数据上涂鸦。相反,您应该在自己的独立开发服务器上工作,当您工作和测试时,您可以将代码更改推送到实时服务器。
(*:这本身就是一个非常糟糕的主意:如果密码太弱,或者您正在运行具有可用漏洞的旧版本的 MySQL,您将很快被自动探针攻击。)
您通常会使用该mysqldump dbname > dbdump.sql
命令从 shell 导出数据库,然后通过管道将其导入到本地服务器上mysql dbname < dbdump.sql
。您可以使用的服务器上可能还安装了一个 MySQL 管理 Web 界面。但是,如果您只有 FTP,那么您并没有真正获得进行开发工作所需的工具。看看您是否可以获得一个空的或虚拟的数据库来测试站点。
(更重要的是,FTP 是一项令人讨厌的业务......真的在这个世纪你应该使用 SFTP。)
最简单的方法是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 访问。