【问题标题】:MySQL connect failed. Can't connect to MySQL server on 'http' (4)MySQL 连接失败。无法连接到“http”上的 MySQL 服务器 (4)
【发布时间】:2017-01-30 15:20:58
【问题描述】:

我尝试使用 JSON Parser 将我的 android 应用程序连接到网络托管。但是每当我尝试连接时(即使只是在浏览器中使用 url 打开)我都会收到错误消息。

<?php
  $dbHost = 'http://sql4.000webhost.com/localhost';
  $dbUser = 'a6410240_cbetTD';
  $dbPass = 'xxxxxx';
  $dbName = 'a6410240_cbetTD';

  $conn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error());
  mysql_select_db($dbName,$conn);
?>

这是我的 database.php 文件。完整的错误信息是

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'http' (4) in /home/a6410240/public_html/database.php on line 8.

我已经尝试更改 $conn 但它仍然没有为我工作。

谢谢

【问题讨论】:

  • 抱歉,MySQL 服务器和 HTTP 服务器是两个完全不同的东西。您显然尝试混合使用... MySQL 服务器不是通过您尝试的 URL 来寻址,而只是使用主机名。为此,必须在主机系统上打开 MySQL 服务器端口。
  • @arkascha 在我的 cPanel 中,数据库存储在 mySQL (phpMyAdmin) 中,所以我只是将我的 dbHost 分配为 localhost?你是这个意思吗?
  • 我不知道cPanel。但是 phps mysql_connect() 函数明确要求提供 主机名php.net/manual/en/function.mysql-connect.php 为什么不阅读您使用的工具的文档?里面的东西解释的很清楚...
  • 一旦你打开它,你还会在页面顶部看到巨大的红色警告,再次重复旧的 mysql 扩展(mysql_...() 函数)已经过时并且很久以前就被弃用了。切换到更新更安全的mysqli 扩展或PDO现在就做

标签: php android mysql web-hosting mysql-connect


【解决方案1】:

MySQL 默认使用 TCP 端口 3306 ($dbport) 和主机名或 IP 地址 ($dbhost)。对于 LAMP (Linux-Apache-MySQL-php),您可以找到很多教程。 为了安全起见,MySQL 服务器通常会监听内部端口(无法通过 Internet 访问)。 如果您熟悉 docker,您可以简单地从 hub.docker.com 下载 LAMP 解决方案的示例。

【讨论】:

    【解决方案2】:

    您遇到的问题已经在其中一个 cmets 中提到,确切地说是this one

    要使您的解决方案发挥作用,您需要做的就是省略开头的 http:// 部分,并可能在结尾处省略 /localhost

    主机只是您所指的域。在这种情况下sql4.000webhost.com。使用 /localhost 你已经尝试连接到一个数据库,虽然你配置的数据库应该是a6410240_cbetTD

    【讨论】:

      【解决方案3】:

      如果您的数据库和应用程序位于同一台服务器上,则在 $dbhost 中使用 "locahost"

      如果您的数据库和应用程序位于不同的服务器,那么您需要在 $dbhost 中使用 IP 地址或主机名 >数据库用户应添加到提供所需权限的数据库服务器上。

      【讨论】:

      • 我已将主机名更改为 localhost,因为它位于同一台服务器上,但我仍然无法连接。这恰好是托管问题,因为即使我在 cPanel 中手动打开(phpMyAdmin)也无法连接。
      • 您现在遇到什么错误,您是否创建了用户“a6410240_cbetTD”并将其映射到数据库“a6410240_cbetTD”?
      • 我现在收到此错误,因为我在第 8 行的 /home/a6410240/public_html/database.php 中的用户 'a6410240_cbetTD'@'10.1.1.20'(使用密码:YES)被拒绝访问在 000webhost (#1045) 中出现类似错误
      • 我认为你还没有添加用户并从 cPanel 映射到数据库,也给用户“a6410240_cbetTD”所需的权限
      • 我已经解决了这个问题,用户已经创建,但是昨天托管站点可能遇到了一个小问题,我什至无法通过 cPanel 在内部访问。 @PravinS
      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      相关资源
      最近更新 更多