使用PHP连接到Amazon RDS

jQu*_*ast 4 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());
Run Code Online (Sandbox Code Playgroud)

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

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

jar*_*ist 13

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

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

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

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

  • [RDS&PHP](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_PHP.rds.html) (2认同)

dom*_*dom 7

一些想法:

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


小智 5

我在尝试使用 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 数据库设置了入站端口
  • 在 MySQL 中确保主机设置为 '%' 而不是 localhost
  • 当 RDS IP 更改时,始终使用端点字符串进行连接