无法连接到MySQL服务器(110)(AWS RDS实例)

6

我有以下代码来连接到一个RDS实例:

import MySQLdb

USERNAME = 'root'
PASSWORD = 'pass'
DB_NAME = 'databasetest2'

print "Connecting to RDS instance"

conn = MySQLdb.connect ( host = 'mysql-db-instance-database-test2.code.us-east-1.rds.amazonaws.com', user = USERNAME, passwd = PASSWORD, db = DB_NAME, port = 3306)

print "Connected to RDS instance"

但是我遇到了这个错误:
 Connecting to RDS instance
    Traceback (most recent call last):
      File "mysql.py", line 10, in <module>
        conn = MySQLdb.connect ( host = 'mysql-db-instance-database-test2.code.us-east-1.rds.amazonaws.com', user = USERNAME, passwd = PASSWORD, db = DB_NAME, port = 3306)
      File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
        return Connection(*args, **kwargs)
      File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
        super(Connection, self).__init__(*args, **kwargs2)
    _mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'mysql-db-instance-database-test2.code.us-east-1.rds.amazonaws.com' (110)")

你看到我为什么会出现这个错误了吗?

1
无法连接到'mysql-db-instance-database-test2.code.us-east-1.rds.amazonaws.com'上的MySQL服务器。听起来像是防火墙问题。请确保端口3306对您服务器的IP开放。 - Machavity
2个回答

8

您应该检查两个点:

  1. EC2安全组是否分配给了您的RDS。请检查入站端口3306是否对您的RDS SG开放。
  2. RDS VPC - 您可能有多个,检查它是否属于与您的EC2实例位于同一VPC。

感谢您的回答。我创建了一个RDS实例,就像这样:https://dev59.com/Donca4cB1Zd3GeqP91ty,其中我将端口定义为3306,并且我没有定义任何安全组,因为当我使用安全组时出现错误,您可以在该链接中看到。因此,如果我使用端口3306来创建RDS实例,应该是开放的,对吗? - UserX
1
据我所见,您已将SG分配为“default”,因此您应该允许3306端口的入站流量。 - Evgeniy Kuzmin
是的,在我的情况下,IP地址被限制在特定实例中。我浪费了很多时间却不知道这一点。 - mohammed_ayaz

0

无法连接到Amazon RDS DB实例可能有多种根本原因。以下是一些最常见的原因:

  1. RDS DB实例处于不可用状态,因此无法接受连接。

  2. 您用于连接到DB实例的源未被授权访问您的安全组、网络访问控制列表(ACL)或本地防火墙。

  3. 使用了错误的DNS名称或端点来连接到DB实例。

  4. 多AZ DB实例故障转移,并且辅助DB实例使用不允许入站连接的子网或路由表。

  5. 用户身份验证不正确。

解决方案:

确保您的数据库实例处于可用状态, 如果您的数据库实例处于失败状态,请参阅:https://aws.amazon.com/premiumsupport/knowledge-center/rds-instance-failed-state/ 确保您的数据库实例允许连接。
解决潜在的DNS名称或端点问题。
检查与您的多AZ部署相关联的路由表。
验证连接。
有关更详细的指南,请参阅此AWS指南:https://aws.amazon.com/premiumsupport/knowledge-center/rds-cannot-connect/ 您还可以使用AWSSupport-TroubleshootConnectivityToRDS来排除故障:https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootconnectivitytords.html

希望这能帮助您解决问题


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