2013-10-17 141 views
2

快速的問題在這裏,我是新來的虛擬主機,我只是有一個爛攤子,看看是什麼。我創建了下面的PHP文件,並託管在我的自由000webhost的域名:無法連接到MySQL數據庫 - PHP

<?php 

$mysql_host = "mysqlXX.000webhost.com"; 
$mysql_database = "***********_people"; 
$mysql_user = "*************_admin"; 
$mysql_password = "******************"; 

// Create connection 
$con=mysqli_connect($mysql_host,$mysql_database,$mysql_user,$mysql_password); 

// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
?> 

我已經設置了(希望正確),一張小桌子在我的數據庫有3個字段:

  1. ID - 沒有空,自動遞增,整數,主要
  2. 名字 - VARCHAR,則長度20
  3. 姓氏 - VARCHAR,則長度20

併爲每一個輸入數據。 當我從控制面板中打開該文件,我得到以下錯誤:

Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'a4935911_people'@'10.1.1.45' (using password: YES) in /home/a4935911/public_html/MySQL+PHP.php on line 9

Failed to connect to MySQL: Access denied for user 'a4935911_people'@'10.1.1.45' (using password: YES)

任何想法,任何人嗎?

+3

你的用戶名/密碼不正確 – Ronnie

+0

如果你的用戶名以'_admin'結尾,那麼錯誤信息是怎麼說出來的...... _people' ...? – CBroe

+1

將其更改爲'$ con = mysqli_connect($ mysql_host,$ mysql_user,$ mysql_password,$ mysql_database);'它會起作用。 –

回答

6

錯誤的參數在這裏序列:

$con=mysqli_connect($mysql_host,$mysql_database,$mysql_user,$mysql_password); 

查看消息:Access denied for user 'a4935911_people'@'10.1.1.45' (using password: YES)其中a4935911_people不是用戶,它是如上面$mysql_database = "***********_people";你的數據庫的名稱。

使用:Host, user, password, dbnameDocumentation中所述。

解決方案:

$con=mysqli_connect($mysql_host, $mysql_user, $mysql_password, $mysql_database); 
+0

啊,我現在看到了。是的,000webhost以這個順序給你變量,所以我認爲這是輸入它們的正確方法。感謝大家的回覆:) – user2867893

+0

@ user2867893不客氣。並且不要忘記接受正確的答案。 –

+0

@AndreyVolk你好,只是問你是否需要等待幾天才能使連接正常工作?我的設置是正確的,但兩天後,我仍然'主機10.1.1.25不允許......'您之前是否遇到過這個問題? –

0

兩個可能的原因:

  1. 錯誤的用戶名/密碼 - 仔細檢查它。

  2. 您無法遠程連接,只能通過本地主機進行連接。檢查您的託管網站的信息。如果不允許,你什麼都不能做。

0

除此之外@ElonThan提供了可能的結論......

它也有可能是你的用戶名缺少正確的權限要連接到數據庫。

+0

我在寫回答的時候忘記了,這是可以的。但解決第2頁。從我的回答中也會解決這個問題(一個命令)。 –

0

對於000webhost.com(免費託管服務),您應該通過將其上傳到000webhost.com服務器來在線測試您的代碼。

這將解決您的問題,當然。

0

您需要的MySQL設置爲允許MySQL數據庫服務器即mysqlXX.000webhost.com這裏爲特定的用戶遠程連接。默認的語法是:

grant <permission> on <database> to <user>@<location> identified by <password>

所以在這裏,你必須使用(如您所指定的參數) -

grant all on ***********_people.* to '*************_admin'@'10.1.1.45' identified by '******************'

因此,對於你的情況下運行下面的命令 - grant all on database_name.* to 'username'@'your_ipaddress' identified by 'password'

在MySQL命令提示符下運行此命令。

這將使用戶名從您的IP使用密碼,並就在指定的數據庫中所有表的所有權限連接。

  • 要允許任何用戶從任何IP地址連接和使用所有表中的任何數據庫使用以下syntax-

grant all on *.* to '%'@'%' identified by 'password'

最後,你有使用以下命令 -

FLUSH PRIVILEGES;

重新加載所有權限。

2
argument sequence is following order. 
$host ="localhost" // change to your host 
$username ="root"  // change to your mysql user name by default root 
$pass =" "  //add password if any 
mysql_connect($host,$username,$pass) //don't change the sequence 
mysql_select("test") // create the test database in mysql