2017-08-13 129 views
0

好吧,我从AWS创建了一个ubuntu实例并在其上下载了LAMP,就像在常规Ubuntu操作系统中一样。当我尝试从我的php脚本连接到数据库时,它拒绝连接。说“连接失败:连接被拒绝”。所以我想我的问题是这样的:亚马逊不允许你连接到数据库而不使用他们的RDS数据库服务,或者我在这里提出错误吗? (为了安全起见,我隐藏了一些数据,...是我的实例的数字)。当我将“ec2-34 -...-..- 64.compute-1.amazonaws.com”放入浏览器时,apache消息出现,所以我不明白为什么这不是作为服务器名称的工作原理?连接到在Ubuntu AWS实例中创建的MySQL数据库

$servername = "ec2-34-...-..-64.compute-1.amazonaws.com"; 

$username = "root"; 

$password = “hidden"; 

$dbname = "questions87"; 


// Create connection 

$conn = mysqli_connect($servername, $username, $password, $dbname); 

// Check connection 

if (!$conn) { 

    die("Connection failed: " . mysqli_connect_error()); 

} 
+1

有你的AWS安全组中开了3306端口? – nacho

+0

不,我尝试将端口3306添加到srcipt中的连接但不在安全组中。这可能是问题所在。让我试试这个,并回到你身边。谢谢。 – do734

+0

那是什么类型?当我GOOGLE了它说tcp/upd但是当我选择这种类型时它只允许端口53? – do734

回答

1

您需要更改与3306相关的EC2安全组入站规则,可以在AWS常见问题解答中找到。然后,您需要确保您的用户@ YOURIP对您的MySQL数据库拥有所有权限。对于入站规则,建议您将自定义规则用于您的IP,而不是所有流量。

参考和进一步阅读:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html

+0

嘿,谢谢!我现在出去了,但当我回来时,我会尝试。 – do734

+0

所以我打开了端口,我创建了一个用户和密码,并授予所有权限,然后当我尝试登录到mysql时,我得到这个“错误1045(28000):拒绝访问用户...”我猜我只需要学习如何使用RDS,但我不知道AWS为什么会强迫你这样做......? – do734

+0

所以,至少你是连接!现在,您可能需要授予用户@ YOURIP,没有什么关于AWS的担心了,它只是您的RDS。看看这个: https://stackoverflow.com/questions/8348506/grant-remote-access-of-mysql-database-from-any-ip-address – k3rn3llp4n1c