使用PHP连接Amazon RDS

5

我正在尝试使用PHP连接文件连接我的RDS实例。

这是我的文件中有的内容:

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事物)URL替换了localhost,使用我的RDS实例用户和密码替换了用户名和密码,并使用我创建实例时设置的数据库名称。但它似乎不起作用。

我是否需要做其他任何事情而我没有意识到,或者它应该工作?


你确定它是MySQL数据库吗?因为Amazon RDS支持MySQL和Oracle数据库两种。 - Arjun Bajaj
我认为我们需要更多的信息来帮助你。 - Arjun Bajaj
你可能需要打开3306端口以接受RDS的传入连接。 - cyberrspiritt
7个回答

14

RDS实例没有固定的IP地址,您始终使用主机的端点。例如:

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

如果您使用的是除根数据库帐户之外的用户名连接实例,则需要授予用户权限。

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


2
RDS和PHP - Jon

8

一些想法:

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

5
我试图使用PHP连接RDS MySQL实例时,遇到了与连接EC2 Apache服务器类似的问题。
奇怪的是,我可以通过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数据库的入站端口。 - 在MySQL中,确保将主机设置为“%”而不是localhost。 - 始终使用终端节点字符串连接,因为RDS IP会发生变化。

如果包含的链接失效了,setsebool -P httpd_can_network_connect=1 是用来调整SELinux以允许httpd与诸如mysql之类的东西建立网络连接的命令。 - Umbrella

1

1

Click here on the Menu (orange).

仅接受所有传入连接。


这是一个巨大的安全风险。远程连接应该被锁定到白名单IP地址。 - Steven K7FAQ

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/

0

我试图使用node-mysql连接到我的DB实例。我发现RDS提供给我的终端进行了DNS查找。我跟进并更改了URL。直到那时,我只能通过命令行连接mysql。当我将其更改为查找后的终端点时,node-mysql最终能够连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接