【问题标题】:PHP remote connection on live is not working [duplicate]实时PHP远程连接不起作用[重复]
【发布时间】:2018-08-08 05:06:20
【问题描述】:

我正在尝试使用 PHP 通过其 IP 访问远程 MySQL 服务器。

这是我的代码:

$servername = "100.XXX.XXX.XXX:3306"; // MySQL IP
$username = "root";
$password = "Password012";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo "success";
}

这在我的本地机器上运行良好,但在现场却不行。

我收到此错误:

警告:mysqli::mysqli(): (HY000/2002): Connection denied in [...]

有什么建议吗?

【问题讨论】:

  • 问题出在端口上。检查端口 3306 或删除端口 3306
  • 可能需要开启远程IP访问mysql
  • 请检查远程服务器的防火墙。还要检查端口 3306 是否已打开以进行连接。 (我想将此添加为评论,但由于声誉较低而无法做到)
  • 那么为什么这在我的本地机器上工作?
  • 在本地机器上测试时,您是否连接到远程 MySQL?

标签: php mysqli remote-access


【解决方案1】:

您需要在您的 mysql 服务器上允许远程连接。

为此,请在您的 mysql 服务器中执行以下命令。请在执行命令之前更改以下命令中的数据库名称和用户名

GRANT ALL PRIVILEGES ON databasename . * TO 'username'@'%';

【讨论】:

  • 不不不。只授予用户实际需要的权限。此外,向每个人 (%) 开放它是一个非常糟糕 的想法。您应该只向需要它的 IP 开放它。
  • @MagnusEriksson 我们可以使用查询特定 IP(PHP 服务器 IP)打开
  • 是的,我同意你们的看法
  • @HituBansal 是的。添加用户时,您可以定义允许哪些主机使用该用户登录。以username@1.2.3.4 为例。
  • 在这种情况下,它将像这样 GRANT SELECT, INSERT, DELETE ON ON databasename 。 * TO '用户名'@'你的 IP 地址';
猜你喜欢
  • 2012-10-12
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
相关资源
最近更新 更多