使用PHP连接到Amazon RDS

时间:2012-03-06 11:24:41

标签: php mysql amazon-web-services amazon-rds

我正在尝试将我的RDS实例与我的PHP连接文件连接。

这就是我在文件中的内容:

define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'User Name');
define('DB_PASSWORD', 'Password');
define('DB_DATABASE', 'DATABASE');

$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());

我用我的RDS Instance用户替换了localhost和我的端点(rds thing)url,用户名和密码,以及我在创建实例时设置的传递和数据库名称。但它似乎没有用。

我还有什么需要做的,我不知道或应该有效吗?

7 个答案:

答案 0 :(得分:13)

RDS实例没有附加静态IP地址,您始终使用端点作为主机。例如:

database1.jlsdfjhgsdf.us-east-1.rds.amazonaws.com

如果使用除root数据库帐户以外的用户名连接到实例,则需要授予用户权限。

检查安全组设置。如果要从Amazon上的另一个EC2实例进行连接,则需要附加该安全组。如果您尝试从外部AWS连接,则需要将要访问的IP地址列入白名单。

答案 1 :(得分:8)

一些想法:

  • 尝试使用实例的实际IP,然后它应该可以工作。
  • 您是否授权访问数据库实例?
  • 您可能需要查看Get Started with Amazon RDS以正确设置RDS实例

答案 2 :(得分:4)

在尝试使用PHP将EC2 Apache服务器连接到RDS MySQL实例时,我遇到了类似的问题。 奇怪的是,我可以通过CLI建立连接 - 一旦在mysql运行状态将告诉你登录的用户,加上端口,服务器名称等。 原来有些AMI图像有SELinux强制执行 - 这意味着apache服务器无法发送网络请求,正如这位先生所指出的那样(http://www.filonov.com/2009/08/07/sqlstatehy000-2003-cant-connect-to-mysql-server-on-xxx-xxx-xxx-xxx-13/

其他要点:

  • 确保为RDS DB设置入站端口
  • 在MySQL中,确保主机设置为'%'而不是localhost
  • 始终使用端点字符串进行连接,因为RDS IP更改

答案 3 :(得分:1)

我最近也遇到了很多麻烦但是能够修复它。我确保我的安全组(对于RDS和EC2)互相允许。我能够从终端运行我的脚本并从终端连接到我的数据库,但我无法让脚本从浏览器运行/连接到MySQL。事实证明我没有安装mysql-server--一旦我安装了它并重新启动httpd和mysqld就像魅力一样。

这篇文章是我安装mysql-server和服务启动/重启的原因。希望能帮助到你! - http://www.rndmr.com/amazon-aws-ec2-easy-web-serverset-up-guide-with-a-mac-and-coda-2-256/

答案 4 :(得分:1)

Click here on the Menu (orange).

只接受所有传入的连接。

答案 5 :(得分:1)

在遵循http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateDBInstance.html的教程时,我也遇到了ec2(apache + php服务器)和RDS(Mysql服务器)之间的连接问题。

当指南使用单引号时,我在指定连接值时使用双引号解决了这个问题。

define('DB_SERVER', "localhost");
define('DB_USERNAME', "User Name");
define('DB_PASSWORD', "Password");
define('DB_DATABASE', "DATABASE");

答案 6 :(得分:0)

我试图使用node-mysql连接到我的数据库实例。我发现我为RDS提供给我的端点进行了DNS查找。接下来,将URL更改为该URL。直到那时我才能通过命令行连接mysql。当我在查找后将其更改为结果端点时,node-mysql终于能够连接。