2016-09-22 192 views
1

我嘗試使用JSON解析器連接我的android應用程序到虛擬主機。但是,無論何時我嘗試連接(甚至只是在瀏覽器中使用url打開),我都會收到錯誤消息。MySQL連接失敗。無法連接到'http'上的MySQL服務器(4)

<?php 
    $dbHost = 'http://sql4.000webhost.com/localhost'; 
    $dbUser = 'a6410240_cbetTD'; 
    $dbPass = 'xxxxxx'; 
    $dbName = 'a6410240_cbetTD'; 

    $conn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error()); 
    mysql_select_db($dbName,$conn); 
?> 

這是我的database.php文件。完整的錯誤信息是

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'http' (4) in /home/a6410240/public_html/database.php on line 8. 

我試過改變$ conn但它仍然沒有爲我工作。

感謝

+1

對不起,但是MySQL服務器和HTTP服務器是完全不同的東西。你顯然試圖混合... MySQL服務器不是通過像你嘗試的URL尋址,而只是與主機名。爲此,必須在主機系統上打開MySQL服務器端口。 – arkascha

+0

@arkascha在我的cPanel中,數據庫存儲在mySQL(phpMyAdmin)中,所以我只是將我的dbHost分配爲localhost?那是你的意思嗎? – gpsrosak

+0

我不知道'cPanel'。但phps'mysql_connect()'函數明確要求_host name_:http://php.net/manual/en/function.mysql-connect.php爲什麼不閱讀所用工具的文檔?事情清楚地在那裏解釋...... – arkascha

回答

2

如果你的數據庫和應用程序是同一臺服務器上然後使用「的locahost」$ DBHOST

如果你的數據庫和應用程序是不同的服務器,那麼你需要在$ DBHOST使用IP地址或主機名數據庫用戶應提供所需權限的數據庫服務器上進行添加。

+0

我已將主機名更改爲本地主機,因爲它位於同一服務器上,但仍無法連接。這恰好是主機問題,因爲我無法連接,即使我手動打開(phpMyAdmin)在cPanel中。 – gpsrosak

+0

你現在正在得到什麼錯誤,你創建了用戶「a6410240_cbetTD」並將它與數據庫「a6410240_cbetTD」映射? – PravinS

+0

我現在收到此錯誤拒絕訪問用戶'a6410240_cbetTD'@'10.1.1。20'(使用密碼:是)在/home/a6410240/public_html/database.php在第8行,因爲我在000webhost(#1045) – gpsrosak

0

您所遇到的問題已經在其中一條評論this one中提到。

爲了您的解決方案的工作,您只需在開頭處省略部分http://,最後可能需要/localhost

主機只是您所指的域。在這種情況下sql4.000webhost.com。使用/ localhost,您嘗試已經連接到數據庫,但您配置的數據庫應該是a6410240_cbetTD

+0

我已經解決了這個問題。謝謝 – gpsrosak

0

MySQL默認使用TCP端口3306 ($ dbport)和主機名或IP地址($ dbhost)。對於LAMP(Linux-Apache-MySQL-php),你可以找到很多教程。 爲安全起見,MySQL服務器通常監聽內部端口(無法通過Internet訪問)。 如果您熟悉docker,只需從hub.docker.com下載LAMP解決方案的示例即可。