2012-08-02 112 views
2

首先,这里是设置: AWS EC2实例已启动并正在运行。端口22,80和3306已添加到安全组php站点没有连接到亚马逊rds上的mysql

RDS数据库实例已启动并正在运行。我的本地IP被添加为CIDR/IP连接。 AWS账户ID已添加为EC2安全组连接。

这对我来说有点奇怪,地区不同。 RDS是美国东部(弗吉尼亚州),EC2是美国西部(俄勒冈州)。

我的本地数据库已成功导入到RDS。我用这样的命令行:

C:\xampp\mysql\bin>mysqldump -u root 'local database' | mysql -- host='Endpoint' -- user='user login' --password='user pwd' ' rds database' 

我也使用MySQL Workbench来连接和查询rds上的数据库。 我从来没有将我的备份sql文件('localhostdatabase.sql')导入到rds。

这里是我如何连接:(两个选项不工作)

// $serverConnect = mysql_connect('rds endpoint','rds admin','rds pwd'); 
// $serverConnect = mysql_connect('EC2 elastic ip','rds admin', 'rds pwd'); 

你可以看到错误,当您单击“演示”按钮http://www.realcardio.com

我需要配置一个PHP文件?如果是这样,我该怎么做? 我的网页文件存储在/ var/www/html。但我不知道php配置文件的位置。

我使用WinSCP连接到EC2。如果我需要在这里修改文件,如何连接到RDS?

我会排查故障并与您分享任何内容。只是想让这个运行起来。 我感谢任何帮助!

DK

+0

除非你有一个非常好的理由,而且大多数人不这样做,否则使用'mysqli'或PDO代替永远危险的'mysql'系列函数会更好一些。 – tadman 2012-08-02 05:23:25

回答

8

好,有一些问题在这里,所以我会尽力通过所有的人都可以得到:

  1. 除非你喜欢慢的性能,您的RDS实例和EC2实例应该在同一地区。易于更改,但在启动之前进行。
  2. 除了数据库证书和RDS实例地址,您不需要在PHP文件中配置任何内容。您应该使用您列出的第一个选项。
  3. 您无法建立连接的原因可能是由于您的安全组。双重和三重检查您的EC2安全组是否被添加为“允许”给您的RDS安全组。请记住,每个安全组都是不同的。如果在验证这些设置后,它仍然不起作用,则直接将EC2实例的IP地址添加到RDS安全组。
  4. 您没有问过的问题:关闭您网站上的display_errors。它暴露了您不希望向用户公开的信息。另外,请勿使用“mysql_ *”功能。他们已经开始了弃用过程,有更多的漏洞超过你的毛孔,也错过了很多新的MySQL功能。改为使用PDO或MySQLi。
+0

我很欣赏你的回复深度。我一定会一遍又一遍地重复这些项目。感谢您的额外建议。只要我可以开始连接,我就会修改我的代码。 – Derek 2012-08-02 02:58:58

+0

我连接!我的应用程序不像我的本地主机那样工作,但我仍然连接在一起。我会确定按照你和tadman的建议研究和使用PDO或mysqli。再次感谢! – Derek 2012-08-02 20:44:33