【问题标题】:Connect to Amazon RDS with PHP使用 PHP 连接到 Amazon RDS
【发布时间】:2017-07-25 17:14:26
【问题描述】:

我正在尝试将我的 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 事物)url 替换了 localhost,用我的 RDS 实例用户替换了用户名和密码,并传递了我在创建实例时设置的数据库名称。但这似乎不起作用。

还有什么我不知道的事情需要我做或应该起作用吗?

【问题讨论】:

  • 您确定它是 MySQL 数据库吗,因为 Amazon RDS 同时支持 MySQL 和 Oracle 数据库。
  • 我认为我们需要更多信息来帮助您。
  • 您可能需要打开 3306 端口以接受到 RDS 的传入连接。

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


【解决方案1】:

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

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

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

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

【讨论】:

【解决方案2】:

一些想法:

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

【讨论】:

    【解决方案3】:

    我在尝试使用 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 更改时始终使用端点字符串进行连接

    【讨论】:

    • 如果包含的链接失效 setsebool -P httpd_can_network_connect=1 是调整 SELinux 以允许 httpd 与 mysql 之类的东西建立网络连接的命令。
    【解决方案4】:

    我最近也遇到了很多麻烦,但能够解决它。我确保我的安全组(用于 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/

    【讨论】:

      【解决方案5】:

      只接受所有传入的连接。

      【讨论】:

      • 这是一个巨大的安全风险。远程连接应锁定到白名单 IP 地址。
      【解决方案6】:

      在学习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");
      

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          猜你喜欢
          • 2018-05-04
          • 2021-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-02
          • 2014-02-17
          • 1970-01-01
          相关资源
          最近更新 更多