【问题标题】:PHP database connectionPHP数据库连接
【发布时间】:2009-11-13 16:27:49
【问题描述】:

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

具体来说,我将其作为常量: 定义(“数据库服务器”,“本地主机”); ...

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

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

我可以这样做吗?如果是这样,怎么做?我只有 FTP 访问权限。

【问题讨论】:

  • 远程 mysql 服务器必须配置为接受远程连接。如果您无权访问 mysql 服务器的配置,那么这可能是不可能的。您确定您的主机帐户上没有 cPanel 或类似界面吗?
  • 这不是我的主机帐户。我只是在网站上做一些 js 工作;我很少使用 PHP 或 mySQL。

标签: php mysql remote-access


【解决方案1】:

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

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

【讨论】:

  • 有没有办法只以编程方式获取 IP/url?
  • 哦,当然。只需使用 mysql_connect("Special://my.database", "你知道,那边的那个", "在另一台电脑上"); PHP 会知道你的意思。
【解决方案2】:

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

【讨论】:

  • 我必须先将“localhost”更改为其他内容吗?我不知道要改成什么或如何弄清楚。
  • @David - 是的,如果您使用共享主机,只需使用您网站的域名而不是 localhost
  • 不行,不行继续改域名。
【解决方案3】:

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

许多(如果不是大多数)托管服务提供商还提供了一个数据库接口,例如 phpMyAdmin。您可以从那里导出数据库。

【讨论】:

  • 哈哈,我喜欢你的想法。但我不知道该怎么做。有链接吗?
【解决方案4】:

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

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

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

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

【讨论】:

    【解决方案5】:

    最简单的方法是将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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 2014-01-11
      • 2013-05-14
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2018-12-30
      相关资源
      最近更新 更多