Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP访问远程数据库MySQL_Php_Mysql - Fatal编程技术网

通过PHP访问远程数据库MySQL

通过PHP访问远程数据库MySQL,php,mysql,Php,Mysql,我在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($resu

我在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";
?>

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

我该怎么办

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

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

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

大多数主机不提供对MySQL服务器的远程a访问,因为这会带来安全风险,也许你应该尝试另一个允许远程访问的免费MySQL服务器,试试看,但速度有点慢。

大多数主机不提供对MySQL服务器的远程a访问,因为这会带来安全风险,也许你应该尝试另一个允许远程访问的免费MySQL服务器,试试看,但是速度有点慢。

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

$ mysql -u myuser -h mysql.example.com -p
您还将收到一条更具描述性的错误消息,例如
错误1045(28000):用户'root'@'remote.example.com'的访问被拒绝(使用密码:YES)

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

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
具体而言,
@“%”
部分允许从任何本地或远程主机进行连接


一旦您可以成功地从命令行连接,那么将命令行参数作为参数复制到
mysql\u connect()

就成了一个简单的问题。在调试这类事情时,最好首先确保您可以使用命令行mysql工具进行连接,以排除与PHP本身相关的问题

$ mysql -u myuser -h mysql.example.com -p
您还将收到一条更具描述性的错误消息,例如
错误1045(28000):用户'root'@'remote.example.com'的访问被拒绝(使用密码:YES)

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

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
具体而言,
@“%”
部分允许从任何本地或远程主机进行连接


一旦您可以成功地从命令行连接,那么将命令行参数作为参数复制到
mysql\u connect()

connect.php中的内容就是一个简单的问题了。除了连接问题(您应该首先解决这个问题)之外,您的
while
循环中的赋值也有问题。实际上,echo总是只输出id最大的用户名。
connect.php
中有什么?除了您的连接问题(您应该首先解决这个问题),您的
while
循环中的赋值有问题。事实上,echo总是只输出id最大的用户名。谢谢,他们的端口已经关闭,所以哦,好吧。你以后也可以
授予newdatbase上的所有权限。*给“用户名”@“%”,由带有授予选项的“密码”标识
刷新权限,用于数据库选择,如果它给您错误。谢谢,他们已经关闭了他们的端口,所以很好。您以后也可以使用GRANT选项将newdatbase.*上的所有特权授予“用户名”@“%”,由“密码”标识
刷新权限,用于数据库选择,如果它给您错误。