MySQL - 无法解析端口?

时间:2012-09-18 12:01:37

标签: c# php mysql

Greetings Stackoverflow。

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

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

$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#)它不会让我连接,或者如果我声明相同的变量并尝试使用相同的变量和程序从另一个IP连接到服务器,它不会让我连接?

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

2 个答案:

答案 0 :(得分:2)

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

  • GRANT PRIVILEGES ... TO user@IP已被授予该IP,但没有其他;如果您对数据库拥有GRANT权限,则可以对此进行补救(请记住FLUSH PRIVILEGES)。
  • MySQL托管上的防火墙可能只允许来自他们自己的Web托管服务器的连接。如果是这种情况,你不可能做任何事情,但试着问他们的支持人员。

通常,您可以实现用PHP编写的瘦REST层(只需谷歌“MySQL REST PHP接口”等),以便您可以连接到Web主机,并从其接口传递查询(当然这些接口是开放的) - 否则Web主机不起作用)。这就是HeidiSQL在某些设置上所做的事情,他们的代码可能会在某处浮动。然后你不会使用C#MySQL库而是使用HTTP库来完成工作。更麻烦,但更便携(也因为无处不在,你可以期待端口3306 / tcp出站开放:它在家用ADSL上,但许多分布式运营商和公司只允许出站端口80,443,110,25到一些IP和其他十几个 - 而3306不在其中;但这取决于您计划使用C#客户端做什么。)

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

答案 1 :(得分:1)

为了安全起见,托管公司通常会锁定MySQL服务器,以便仅响应其网络上的Web主机的IP地址。

所以,我担心的简短回答是你可能无法将其设置为允许所有IP。