php - 是否可以使用 php pdo 连接到 ec2 实例上的远程数据库?

标签 php mysql pdo amazon-ec2 amazon-web-services

我使用以下命令从本地主机连接到 mysql 数据库

<?php
function testdb_connect ()
{
   $dbh = new PDO("mysql:host=localhost;dbname=test", "testuser", "testpass");
   return ($dbh);
}
?>

但是,当我尝试从另一台服务器连接到此数据库(数据库在 ec2-12-34-56-78.compute-1.amazonaws.com 上运行)时,使用以下命令代码

$dbh = new PDO("mysql:host=ec2-12-34-56-78.compute-1.amazonaws.com;dbname=test", "testuser", "testpass");

我无法连接。

是否可以使用 php pdo 连接到 ec2 实例上的远程数据库?

我如何传递身份验证参数(例如私钥)

最佳答案

您可能应该考虑对数据库使用 RDS,而不是在 EC2 上实现,除非您有一个非常独特的数据库,需要高度自定义(即集群配置等)。在 EBS 支持的卷上运行(您需要这样做才能持久保存物理数据文件)将使您的磁盘 I/O 速度变慢。如果您没有在 EBS 支持的 EC2 上运行,那么您的数据是暂时的,不能被视为位于可靠的物理存储上。如果这适合您的设计(您只需要数据库中的 transient 信息),那么您可能会得到更好的服务,只需将您的信息放入 Elasticache 或某种形式的内存缓存中即可。

RDS 使用 MySQL(当然,您也可以选择使用 Oracle)。您将完全像访问自己的 MySQL 服务器一样访问它(相同的 PHP 抽象、相同的 SQL、几乎所有内容都相同(您没有获得 root 访问权限,而是一种 super 用户访问权限)。RDS 还为您提供了轻松的访问权限。实现(即按钮)多可用区(高可用性、同步更新备用)配置、复制从属、数据库实例大小调整和数据快照。

无论哪种情况(对于 RDS 或 EC2),您都需要确保您的 EC2 或 RDS 安全组允许从托管您的应用程序的 EC2 实例(或其他服务器)进行访问。如果仅使用 EC2,您可以将服务器放在同一个安全组中,并提供该组上的端口 3306 访问权限,或者更好的是创建两个安全组(一个用于应用程序,一个用于数据库)。在数据库安全组中,向应用服务器所属的安全组提供端口 3306(或您正在使用的任何端口)。

对于 RDS,您需要针对应用服务器的 EC2 安全组和针对 RDS 实例的数据库安全组。您需要在 RDS 安全配置中提供对应用服务器安全组的访问权限。

关于php - 是否可以使用 php pdo 连接到 ec2 实例上的远程数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12569499/

相关文章:

php - 使用多个列表菜单和复选框 php

php - 仅在 php mysqli 中获取数组中的第一项

php - 来自mysql存储过程和php json_decode的正确格式的关联数组

php - 如何删除使用 PDO 插入 MySQL 表的最后一条记录?

javascript - 在 Magento 中设置 Disqus 多个规范 URL

php - MVC 应该如何在 CodeIgniter 中工作

javascript - 使用可点击的链接填充选择框

javascript - 如何加载从 php 文件获取的 JsGrid 表中的行?

php - 在 slim 框架中使用 PDO 的方法是什么?

MYSQL - 使用一个搜索词在 2 列中搜索