2011-12-02 120 views
2

我想从我的电脑使用下面的代码连接到MySql服务器(不是本地主机)。它给这个错误:mysql_connect()使用http协议

警告:mysql_connect()函数[function.mysql-连接]:[2002]连接被拒绝(试图通过TCP连接://10.6.3.6:3306)在第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

+0

对不起。这是我的第一个问题;不知道这个惯例。 谢谢大家回答。 –

回答

3

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

总之:没有。你正试图解决错误的问题。您需要配置您的MySQL服务器以允许通过网络连接来自其他机器的连接,为您尝试连接的用户提供适当的权限以从其他机器连接并确保MySQL服务器可从其他机器访问。

+0

谢谢。我想我不能做太多的事情,因为我没有MySQL服务器的必要权限。 –

4

你不能。 HTTP不是适用于此的协议。

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

0

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

0

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

换句话说,这可能很明显,但要确保用户具有有效的远程凭证。

在命令行(如果你可以涉及到这一点),可以在MySQL这样做是为了添加允许从远程联接连接用户:

mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; 

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' 
->  WITH GRANT OPTION; 

这将创建一个用户,蒙蒂与密码some_pass,在所有数据库上具有完全权限,所有表格从到任何地方。 %是这里的关键,并且是远程访问所必需的。

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

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