【问题标题】:AWS RDS and PDO don't work SQLSTATE[HY000] [2002] [duplicate]AWS RDS 和 PDO 不起作用 SQLSTATE[HY000] [2002] [重复]
【发布时间】:2019-09-21 02:10:12
【问题描述】:

我使用 RDS 创建了我的 MySQL 5.7 数据库。

之前,我使用 PDO 连接到与 Web 服务器位于同一服务器上的数据库。不是 EC2 的服务器。一切都很好。

我创建了我的 RDS 数据库并使用 AWS id 为数据库修改了我的类,现在它不再工作了。

连接信息似乎正确,因为我可以从 MySQL Workbench 连接到它。

这是我的代码:

$_HOST = 'xxxxxxxxx.us-east-2.rds.amazonaws.com';
$_PORT = 3306;
$_DBNAME = 'xxxxx';
$_USER = 'xxxx';
$_PASS = 'xxxx';

$connexionString = "mysql:host={$_HOST};port={$_PORT};dbname={$_DBNAME}";

self::$_instance = new PDO($connexionString, $_USER, $_PASS);

这是错误信息:

PDOException: SQLSTATE[HY000] [2002] 连接尝试失败 因为连接方在一段时间后没有正确响应 时间,或建立连接失败,因为连接的主机有 没有回应。

你认为发生了什么?

【问题讨论】:

  • 尝试删除大括号和端口。
  • 检查您的 AWS 配置是否将您的服务器上的本地公共 IP 地址列入白名单...
  • 检查这个:mariolurig.com/coding/…

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


【解决方案1】:

检查您的安全组:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html

我怀疑您在 RDS 端向其发送数据库流量的端口未对传入或传出开放。或者,您的网络服务器上的端口未对传入或传出开放,但我想传出端口对所有人开放。

例如,如果使用默认端口 3306,那么您需要确保 RDS 安全组和您的 Web 服务器安全组端口都对 3306 开放。

取自显示为重复的帖子:

1) 登录您的 AWS 控制台并转到“EC2”

2) 在“网络和安全”下的左侧菜单中,转到“安全组”

3) 检查有问题的安全组

4) 点击“入站标签”

5) 从下拉列表中选择“MYSQL”并点击“添加规则”

如果您需要更多帮助,请随时告诉我。

【讨论】:

  • 感谢您的帮助,我必须将我的服务器的 ip 添加到 RDS 的 EC2 安全组中,它可以工作。
猜你喜欢
  • 1970-01-01
  • 2019-02-07
  • 2018-10-20
  • 2017-11-09
  • 2014-11-22
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 2017-09-10
相关资源
最近更新 更多