【问题标题】:Access MySQL database remotely using PHP使用 PHP 远程访问 MySQL 数据库
【发布时间】:2017-09-02 04:01:44
【问题描述】:

我正在尝试远程访问数据库。我可以从服务器本身访问它,但我需要远程访问它,并且我正在使用我的计算机上的 XAMPP 进行访问。

我添加了数据库用户从我的 ip 访问数据库的可能性(也尝试使用 %)。代码如下:

$servername = $websiteIP; //e.g. xx.xx.xxx.xxx, also tried website URL and URL to phpMyAdmin 
$username = 'username';
$password = 'password'; 
$dbname = 'dbname';
$port = '3306';
$conn = new mysqli($servername, $username, $password, $dbname);
// also tried $conn = new mysqli($servername, $username, $password, $dbname, $port);

但我总是得到这个错误:

Warning: mysqli::mysqli(): (HY000/2002): 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。在...

除非我使用 $servername = $urlToMyPhpAdmin; 然后我得到这个错误:

Warning: mysqli::mysqli(): MySQL server has gone away in xxx on line 10. Warning: mysqli::mysqli(): Error while reading greeting packet。 PID=102448 in xxx on line 10. 警告:mysqli::mysqli(): (HY000/2006): MySQL server has gone away in xxx on line 10

我错过了什么?

【问题讨论】:

  • 您检查入站端口了吗?通过禁用数据库服务器(iptable/Selinux)的防火墙检查一次。
  • @webDev 抱歉,我不太确定入站端口是什么。而且我很确定我没有禁用防火墙的权限。

标签: php mysql remote-access


【解决方案1】:

数据库与网站是否在同一台服务器上?您可能需要数据库主机的 IP 或地址,而不是网站(或 PHPMyAdmin)。我会进入 PHPMyAdmin 并运行以下查询,取自 this 答案:

select * from GLOBAL_variables where variable_name like 'hostname';

并尝试将结果用作您的$servername

【讨论】:

  • 我在使用您的 SQL 时出现错误,但这有效: SHOW VARIABLES WHERE Variable_name = 'hostname' 是一样的吗?结果是一个文本字符串 ($string)。然后我使用以下代码:echo gethostbyname($string),这会产生一个与网站 IP 相同的 IP。
  • 好的,很酷,所以您肯定希望将该 IP 用作您的$servername。我会查看this 网站并确保您设置的用户具有远程连接的正确权限,也许尝试在本地运行 mysql 以连接到远程数据库以确保它可以接受远程连接
  • 看来你让我走上了正轨。如果我使用 IP 作为 $servername(不是 localhost)并从远程服务器本地连接,一切正常。但是当我将相同的代码移动到我的 XAMPP 服务器时,我得到了错误。所以我想即使远程服务器的控制面板允许我将主机从 localhost 更改为每个用户的 ip,我仍然无法访问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 2010-12-14
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
相关资源
最近更新 更多