2011-08-18 3 views
0

en fait avoir la liste de la médecine dans un fichier et je veux l'insérer sur ec2 base de données du serveur amazon qui est mysql.J'exécuter ce fichier sur localhost.when im essayer mon code, qui est en PHP, il montre une erreur comme suit: je ne reçois pas.lire le fichier en php et insérer dans ec2 base de données mysql serveur amazon

Attention: mysql_connect() [fonction.mysql-connect]: Impossible de se connecter au serveur MySQL sur 'ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com' (10060 Impossible de se connecter à MySQL Ceci est un nom de serveur: ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com Voici mon code ... et laissez-moi savoir où je me trompe.

<?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

Êtes-vous capable de se connecter au serveur MySQL depuis la ligne de commande? – Sukumar

+0

Je suis sûr que la partie 'http: //' ne devrait pas être dans le $ $ hostname'. De plus, utiliser '" $ variable_name "' est exactement le même que '$ variable_name', mais plus lent et complètement inutile. Je me suis toujours demandé pourquoi les gens font cela ... – shesek

+0

merci pour répondre et mon code fonctionne parfaitement sur localhost ... mais je veux insérer ce fichier de données dans le serveur en fait je ne reçois pas d'aide plz .... et im en utilisant amazon par mastic là quand j'ai raison mysql -uroot -pbitnami il ouvre mysql .... – gur

Répondre

0

Je reçois

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

Qu'en est-il pour essayer de changer votre "hosname" pour adresse IP? Cela aiderait-il?

Quand je suis en train de faire un ping, il est injoignable

+0

même erreur lorsque j'essaye avec ipaddress ne pas obtenir Avertissement: mysql_connect() [fonction.mysql-connect]: Impossible de se connecter au serveur MySQL sur '122.248.220.105' (10060) dans C: \ websites \ medicine \ filehandling.php sur la ligne 17 Impossible de se connecter à MySQL – gur

+0

car il est inaccessible. essayez de le pinguer à partir de votre cmd: p C: \ Users \ Genesis> ping 122.248.220.105 Commande PING à 122.248.220.105: Délai d'attente – genesis

+0

Je tente de ping ip mais son fonctionnement. encore le problème .... je mentionne mon code php, mais le problème est de se connecter avec le serveur. – gur

1

Il y a plusieurs raisons possibles pour lesquelles vous n'êtes pas en mesure de se connecter au serveur.

  1. Pare-feu (iptables) les paramètres sur le serveur empêchent l'accès externe
  2. Le serveur MySQL écoute uniquement pour les connexions locales
  3. Il n'y a pas utilisateur distant MySQL créé sur le serveur
  4. Votre $hostname devrait être 'ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com';

Il peut y avoir d'autres raisons aussi.

En outre, il est généralement une mauvaise idée de se connecter à des bases de données sur Internet pour des raisons allant de la sécurité à la latence.

Bonne chance!

0

Si vous utilisez un BitNami AMI, vous ne pourrez pas vous connecter à la base de données MySQL à distance dans une configuration par défaut. Pour des raisons de sécurité, nous ne l'activons pas (je suis un développeur BitNami). Dans tous les cas, si vous voulez autoriser les connexions à distance pour la base de données 'fortis', je recommanderais de créer un utilisateur différent qui n'aura accès qu'à cette base de données au lieu d'utiliser l'utilisateur 'root'. Ce serait un peu plus sûr bien que, comme le mentionne Sukumar, il vaut mieux éviter de donner accès à MySQL dans les machines publiques.

Pour donner un accès distant à un utilisateur différent, vous devrez vous connecter (avec du mastic) à votre machine amazon et exécuter les commandes suivantes. Je suppose que vous utilisez BitNami (à cause de votre mot de passe). (Notez cet espace entre le point et la commande, cela va charger l'environnement BitNami).

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

Ce qui précède crée le fortis_user pour la base de données avec l'accès depuis localhost.

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

Ce ci-dessus donnera accès à la fortis_user pour la base de données de tout autre IP.

Maintenant, vous devriez être en mesure de se connecter avec:

$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 
Questions connexes