【问题标题】:mysql_connect() using http protocolmysql_connect() 使用 http 协议
【发布时间】:2011-12-02 06:12:54
【问题描述】:

我正在尝试使用以下代码从我的计算机连接到 MySql 服务器(不是本地主机)。它给出了这个错误:

警告:mysql_connect() [function.mysql-connect]: [2002] 第 7 行的连接被拒绝(尝试通过 tcp://10.6.3.6:3306 连接)

我想知道我们是否可以使用 http 协议来代替默认使用的 tcp 连接?我搜索了很多关于如何更改协议的内容,但大多数答案都在描述如何连接到 localhost,而不是关于如何连接到另一台服务器。请帮忙。

PS:我可以通过http://10.6.3.6/phpmyadmin/...连接到服务器。)所以我确定服务器已经启动了。

我的代码

<?php

$db_hostname = '10.6.3.6';
$db_database = 'db_user11';
$db_username = 'db_user11';
$db_password = '########';

$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database, $db_server)
or die("Unable to select database: " . mysql_error());

?>

【问题讨论】:

  • 请在问题中添加代码,以便现在和将来参考。
  • 对不起。这是我的第一个问题;不知道公约。谢谢大家的回答。

标签: php mysql http


【解决方案1】:

你不能。 HTTP 不是适合这种情况的协议。

您在这里谈论 2 个进程(MySQL 服务器和您的应用程序)进行通信,它们要么通过共享内存、管道或套接字进行通信。这些是进程相互通信的 3 种方式。

【讨论】:

    【解决方案2】:

    首先,HTTP 位于 TCP/IP 之上。
    为了通过 HTTP 连接到某个东西,它需要运行一个 HTTP 服务器。 MySQL 不运行 HTTP 服务器,并且没有当前/现实/支持的方式来通过 HTTP 建立 SQL 连接。即使有,HTTP 也不是最好的协议。

    简而言之:没有。你试图解决错误的问题。您需要将 MySQL 服务器配置为允许通过网络从其他计算机连接,为您尝试连接的用户授予从其他计算机连接的适当权限,并确保 MySQL 服务器可从其他计算机访问。

    【讨论】:

    • 谢谢。我想我对此无能为力,因为我没有 MySQL 服务器的必要权限。
    【解决方案3】:

    仅仅因为phpmyadmin 托管在该服务器上,并不一定意味着数据库服务器位于相同的IP 地址中。请向域管理员提供数据库服务器的详细信息。

    【讨论】:

      【解决方案4】:

      也许只需检查并确保您正在连接的 mysql 用户帐户具有适当的远程访问权限设置。

      换句话说,这可能很明显,但请确保用户拥有有效的远程凭据。

      在命令行上(如果你可以与此相关),可以在 mysql 中执行此操作以添加允许从远程连接进行连接的用户:

      mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
      
      mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
      ->     WITH GRANT OPTION;
      

      这将创建一个用户,monty,密码为 some_pass,对所有数据库和来自任何地方的所有表都具有完全权限。 % 是这里的关键,是远程访问所必需的。

      通过 gui 工具创建的 MySQL 用户通常将主机设置为“localhost”,这将不允许远程连接。

      希望这会有所帮助。祝你好运。

      【讨论】: