2011-08-18 35 views
0

實際上,我有一個文件中的藥物列表,我想插入它的ec2亞馬遜服務器數據庫這是mysql.I運行此文件localhost.when即時通訊試圖我代碼,這是在PHP中顯示錯誤如下:我沒有得到。在php中讀取文件,並插入ec2亞馬遜服務器mysql數據庫

警告:mysql_connect()[function.mysql-connect]:無法連接到'ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com'(10060 )在第17行的C:\ websites \ medicine \ filehandling.php上 無法連接到MySQL 這是一個servername:ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com 這裏是我的代碼...並讓我知道我的錯在哪裏。

<?php 

$hostname='http://ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com'; 
//$port='3306'; 
$user='root';//// specify username 
$pass='bitnami'; //// specify password 
$dbase='fortis'; //// specify database name 
set_time_limit(1000); 
$connection = mysql_connect("$hostname" , "$user" , "$pass" ,"$port") 
or die ("Can't connect to MySQL"); 
$db = mysql_select_db($dbase , $connection) or die ("Can't select database."); 
$file = fopen("med4","r") or exit ("File not found"); 
$c =0 ; 
     while (!feof($file)){ 
      ++$c; 
     $val = fgets($file); 
     mysql_query("insert into patientinfo_medicines (medicine) values ('$val')");  
     } 
fclose($file); 
echo $c; 
?> 
+0

您能夠連接到命令行的MySQL服務器? – Sukumar

+0

我很確定'http://'部分不應該在'$ hostname'中。另外,使用'「$ variable_name」'與'$ variable_name'完全相同,但是速度較慢且完全無用。我一直想知道爲什麼人們這樣做... – shesek

+0

thanx答覆和我的代碼完美工作localhost ...但我想插入這個文件數據到服務器其實我沒有得到PLZ的幫助....和即時通訊使用亞馬遜膩子在那裏,當我正確的MySQL -uroot -pbitnami它打開MySQL .... – gur

回答

0

我越來越

ERROR 2005 (HY000): Unknown MySQL server host 'http://ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com/' (1) 

要嘗試改變你的 「hosname」 到IP地址是什麼?這會有幫助嗎 ?

當我嘗試ping它,它是不可達

+0

同樣的錯誤,當我嘗試與ipaddress沒有得到警告:mysql_connect()[function.mysql連接]:無法連接到'122.248.220.105' (10060)在第17行的C:\ websites \ medicine \ filehandling.php中 無法連接到MySQL – gur

+0

,因爲它無法訪問。嘗試從您的cmd ping命令:p C:\ Users \ Genesis> ping 122.248.220.105 命令PING到122.248.220.105: 超時 – genesis

+0

我嘗試ping ip,但它的工作。仍然是問題....我提到我的PHP代碼,但問題是與服務器連接。 – gur

1

有很多,爲什麼你不能連接到服務器可能的原因。在服務器上

  1. 防火牆(iptables的)設置防止外部訪問
  2. MySQL服務器只監聽本地連接
  3. 沒有在服務器上創建任何MySQL的遠程用戶
  4. $hostname應該'ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com';

也可能有其他原因。

此外,通過因特網連接數據庫通常是一個壞主意,原因從安全到延遲不等。

祝你好運!

0

如果您使用的是BitNami AMI,您將無法以默認配置遠程連接到MySQL數據庫。出於安全原因,我們不啓用它(我是BitNami開發人員)。在任何情況下,如果你想允許遠程連接數據庫'fortis',我會建議創建一個不同的用戶,只能訪問該數據庫,而不是使用'root'用戶。雖然Sukumar提到更好地避免在公共機器上訪問MySQL,但這會更安全一些。

要遠程訪問不同的用戶,您需要將(使用putty)連接到您的亞馬遜機器並執行以下命令。我想你正在使用BitNami(因爲你的密碼)。

. /opt/bitnami/scripts/setenv.sh(注意點和命令之間的空間,這將加載BitNami環境)。

mysql -u root -p -e "grant all privileges on fortis.* to 
'fortis_user'@'localhost' identified by 'fortis_password'" 

以上內容將爲本地主機的訪問創建數據庫的fortis_user。

mysql -u root -p -e "grant all privileges on fortis.* to 
'fortis_user'@'%' identified by 'fortis_password'" 

這上面將提供從任何其他ip訪問數據庫的fortis_user。

現在,你應該能夠與連接:

$hostname='ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com'; 
//$port='3306'; 
$user='fortis_user';//// specify username 
$pass='fortis_password'; //// specify password 
$dbase='fortis'; //// specify database name