我正在尝试使用下面的代码从我的计算机连接到MySql服务器(而不是localhost)。它给出了这个错误:
警告:mysql_connect()[function.mysql-connect]:[2002]连接被拒绝(尝试通过tcp://10.6.3.6:3306连接)在第7行
我想知道我们是否可以使用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());
?>
答案 0 :(得分:4)
你做不到。 HTTP不是适用于此的协议。
你说的是在这里进行通信的2个进程(MySQL服务器和你的应用程序),它们通过共享内存,管道或套接字来完成。这些是流程相互通信的3种方式。
答案 1 :(得分:3)
首先,HTTP在TCP / IP之上分层 为了通过HTTP连接到某些东西,它需要运行HTTP服务器。 MySQL不运行HTTP服务器,并且没有当前/现实/支持的方式来通过HTTP隧道连接SQL。即使有,HTTP也不是最好的协议。
简而言之:不。你正试图解决错误的问题。您需要配置MySQL服务器以允许来自网络上其他计算机的连接,为您尝试连接的用户提供从其他计算机连接的适当权限,并确保可以从其他计算机访问MySQL服务器。
答案 2 :(得分:0)
仅仅因为phpmyadmin
托管在该服务器上,并不一定意味着数据库服务器位于同一IP地址中。请让域管理员向您提供数据库服务器的详细信息。
答案 3 :(得分:0)
也许只需检查并确保您连接的mysql用户帐户具有为远程访问设置的适当权限。
换句话说,这可能很明显,但请确保用户拥有有效的远程凭据。
在命令行上(如果你可以与此相关),可以在mysql中执行此操作以添加允许从远程连接进行连接的用户:
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
这将创建一个用户密码,密码为some_pass,在所有数据库上具有FULL权限,所有表都来自任何地方。 %是此处的关键,是远程访问所必需的。
通过gui工具创建的MySQL用户经常将主机设置为“localhost”,这不允许远程连接。
希望这会有所帮助。好运。