mysql_connect()使用HTTP协议

3
我正在尝试使用下面的代码从我的计算机连接到一个MySQL服务器(而不是本地主机)。它会出现以下错误:

警告:mysql_connect() [function.mysql-connect]:[2002] 拒绝连接 (尝试通过tcp://10.6.3.6:3306连接) in on line 7

我想知道是否可以使用http协议来代替默认使用的tcp进行连接?我搜索了很多关于如何更改协议的答案,但大多数都是关于如何连接到本地主机,而不是如何连接到另一个服务器。请帮忙。

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());

?>

1
请将代码添加到问题中,以便现在和将来易于参考。 - Bryan
抱歉,这是我的第一个问题,不知道惯例。 谢谢大家的回答。 - Saheel Godhane
4个回答

6

很抱歉,HTTP协议不适合此类操作。

您所说的是两个进程之间的通信(MySQL Server和您的应用程序),它们可以通过共享内存、管道或套接字进行通信。这是进程相互通信的三种方式。


4
首先,HTTP是建立在TCP/IP协议之上的。要通过HTTP连接到某个服务,需要运行一个HTTP服务器。MySQL没有运行HTTP服务器的功能,也没有现实可行的方法可以通过HTTP隧道传输SQL连接。即使有这种方法,HTTP也不是此情况下最好的协议选择。
简而言之,不行。您试图解决错误的问题。您需要配置MySQL服务器以允许其他机器通过网络连接,为尝试连接的用户授予适当的从其他计算机连接的权限,并确保MySQL服务器能够被其他机器访问到。

谢谢。我想我对此无能为力,因为我没有MySQL服务器所需的权限。 - Saheel Godhane

0

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


0

可能只需要检查并确保您连接的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”,这将不允许远程连接。

希望这可以帮到你。祝好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接