1

问候 Stackoverflow。

我目前使用000webhost.com作为我的 MySQL 数据库/服务器提供商。使用 PHP,他们的服务非常出色!

我制作了一堆包含 MySQL 用户名、密码、主机、数据库等的变量。看起来如下:

$mysql_host = "mysql3.000webhost.com";
$mysql_database = "a1966938_AtMarke";
$mysql_user = "a1966938_admin";
$mysql_password = "**********";
$mysql_table = "MarketDatas";

我正在使用“mysql_connect($mysql_host, $mysql_user, $mysql_password);” 连接到服务器。同样,所有这一切都完美无缺。但是,当我尝试通过连接到数据库时。客户端(C#)它不会让我连接,或者如果我声明相同的变量并尝试使用 PHP 使用相同的变量和程序从另一个 IP 连接到服务器,它不会让我连接?

我很困惑 - 我应该怎么做,所以它允许所有 IP?

4

2 回答 2

2

它不允许从其他IP连接的原因可能有两个:

  • GRANT PRIVILEGES ... TO user@IP分配给该 IP,但未分配给其他 IP;如果您对数据库具有 GRANT 权限,您也许可以解决这个问题(请记住 FLUSH PRIVILEGES)。
  • MySQL 主机上的防火墙可能只允许来自它们自己的 Web 主机服务器的连接。如果是这种情况,您不太可能做任何事情,但请尝试询问他们的支持人员。

通常,您可以实现一个用 PHP 编写的瘦 REST 层(只需 google 'MySQL REST PHP 接口'等),这样您就可以连接到 Web 托管,并通过它们的接口(当然是开放的 - 否则网络托管不起作用)。这就是 HeidiSQL 在某些设置上所做的,它们的代码可能在某处浮动。然后,您将不会使用 C# MySQL 库,而是使用 HTTP 库来完成这项工作。更麻烦,但更便携(也因为并非所有地方都可以期望端口 3306/tcp 对外开放:它在家庭 ADSL 上,但许多分布式运营商和公司只允许某些出站端口 80、443、110、25 IP 和其他十几个 - 并且 3306 不在其中;但这取决于您计划对 C# 客户端执行的操作)。

但是,如果您得到“无法解析端口”,这也可能是由客户端库引起的,您可能需要手动指定 MySQL 连接端口值;默认值为 3306,并且(通常)您可以在主机名中指定它,例如“myserver.host.com:3306”。

于 2012-09-18T12:07:49.523 回答
1

出于安全考虑,托管公司通常会锁定 MySQL 服务器,使其仅响应其网络上 Web 主机的 IP 地址。

因此,恐怕简短的回答是您可能无法将其设置为允许所有 IP。

于 2012-09-18T12:06:27.673 回答