读取文件在PHP和插入到ec2亚马逊服务器mysql数据库


read file in php and insert into ec2 amazon server mysql database

实际上我在一个文件中有药物列表,我想将其插入ec2亚马逊服务器数据库,这是mysql。我在本地主机上运行这个文件。当我尝试我的代码,这是在PHP它显示如下错误:我没有得到。

警告:mysql_connect() [function。在C:'websites'medicine'filehandling.php的第17行中,无法连接到"ec2- 122-248-2205-105.ap-东南-1.compute.amazonaws.com"(10060)的MySQL服务器无法连接MySQL这是一个服务器名:ec2-122-248-220-105.ap-southeastern -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;
?>

无法连接到服务器的原因可能有很多。

  1. 服务器上的防火墙(iptables)设置阻止外部访问
  2. MySQL服务器只监听本地连接
  3. 服务器上没有MySQL远程用户
  4. 你的$hostname应该是'ec2-122-248-220-105.ap-southeast-1.compute.amazonaws.com';

可能还有其他原因。

此外,出于从安全到延迟的各种原因,通过internet连接数据库通常是一个坏主意。

祝你好运!

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

试着把你的"主机名"改成IP地址怎么样?有帮助吗?

当我尝试ping它时,它无法到达

如果您使用的是BitNami AMI,您将无法在默认配置下远程连接到MySQL数据库。出于安全原因,我们没有启用它(我是BitNami开发人员)。在任何情况下,如果你想允许远程连接数据库'fortis',我建议创建一个不同的用户,只能访问该数据库,而不是使用用户'root'。这样会更安全一点,尽管Sukumar提到最好避免在公共机器上访问MySQL。

要让另一个用户远程访问,您需要(使用putty)连接到您的amazon机器并执行以下命令。我猜你正在使用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'"  

上面的代码将为从localhost访问的数据库创建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