2011-12-02 112 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',這不允許遠程連接。

希望這會有所幫助。祝你好運。