【问题标题】:Access remote database MySQL via PHP通过 PHP 访问远程数据库 MySQL
【发布时间】:2011-04-09 01:47:17
【问题描述】:

我在 000webhost.com 上设置了一个 MySQL 数据库。我想通过 PHP 访问我的数据库中的数据。我试过了:

<?php 

include("connect.php");
mysql_select_db("XXXXXXX_users", $con) or die(mysql_error()); 

$result = mysql_query("SELECT * FROM data ORDER BY id DESC");
while($row = mysql_fetch_array($result))     
{
    $id = $row['id'];
    $user = $row['usrname'];
} 


echo "$user";
?>

但它总是返回:“连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。”

我该怎么办?

  • 我没有 root 访问权限
  • 我正在尝试在 Apache 上运行脚本

【问题讨论】:

  • connect.php 中有什么内容?
  • 除了您的连接问题(您应该首先解决)之外,您的while 循环内的分配存在问题。实际上,您的回显将始终只输出具有最大 id 的用户名。

标签: php mysql


【解决方案1】:

在调试这类事情时,最好先确保可以使用命令行 mysql 工具连接,以排除与 PHP 本身相关的问题。

$ mysql -u myuser -h mysql.example.com -p

您还会收到更具描述性的错误消息,例如ERROR 1045 (28000): Access denied for user 'root'@'remote.example.com' (using password: YES)

如果 mysql 端口甚至在一开始就在公共接口上打开(这通常是一个糟糕的想法),mysql 本身就有基于连接主机的访问控制层。您可能需要使用通配符主机名专门创建一个帐户,如下所示:

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';

具体来说,@'%' 部分允许从本地或远程的任何主机进行连接。

一旦您可以从命令行成功连接,那么将命令行参数作为参数复制到mysql_connect() 就是一个简单的问题

【讨论】:

  • 谢谢,不过他们的端口已经关闭了,好吧。
  • 您也可以稍后执行GRANT ALL privileges ON newdatbase.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;FLUSH PRIVILEGES;,如果它给您错误,则用于数据库选择。
【解决方案2】:

很多(如果不是全部?)托管服务提供商限制对 mysql 数据库的远程访问。这意味着您只能通过 localhost 进行连接。主机提供商上可能有一个 mysql 配置部分,它允许您配置某个用户可以从中连接的 IP 地址。祝你好运。

【讨论】:

    【解决方案3】:

    大多数主机不提供对 MySQL 服务器的远程访问,因为它存在安全风险,您应该尝试另一个允许远程访问的免费 MySQL 服务器,尝试this,但它有点慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-02
      • 2010-12-14
      • 1970-01-01
      • 2021-11-15
      • 2014-07-14
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      相关资源
      最近更新 更多