【问题标题】:Can't connect to MySQL server (110) (AWS RDS Instance)无法连接到 MySQL 服务器 (110)(AWS RDS 实例)
【发布时间】:2015-06-24 18:22:34
【问题描述】:

我有这段代码可以连接到一个 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)")

你明白我为什么会出现这个错误吗?

【问题讨论】:

  • Can't connect to MySQL server on 'mysql-db-instance-database-test2.code.us-east-1.rds.amazonaws.com 听起来像是防火墙问题。确保端口 3306 对您的服务器的 IP 开放

标签: amazon-web-services mysql-python


【解决方案1】:

你应该检查两点:

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

【讨论】:

  • 感谢您的回答。我创建了一个这样的 RDS 实例:stackoverflow.com/questions/29434025/…,我将端口定义为 3306,但我没有定义任何 security_group,因为我在使用 security_group 时出现错误,正如您在该链接中看到的那样。那么如果我使用 3306 端口创建 RDS 实例应该是开放的吧?
  • 我可以看到你分配了 SG 'default' 所以你应该在那里允许传入的 3306 端口
  • 是的,在我的情况下,IP 受限于特定实例。我在不知不觉中浪费了很多时间。
【解决方案2】:

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

  1. RDS 数据库实例处于非可用状态, 所以它不能接受连接。

  2. 您用于连接数据库实例的源丢失 从授权访问您的安全组中的数据库实例的来源, 网络访问控制列表 (ACL) 或本地防火墙。

  3. 使用错误的 DNS 名称或端点连接到数据库实例。

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

  5. 用户认证不正确。

分辨率:

  1. 确保您的数据库实例处于可用状态, 如果您的数据库实例处于失败状态,请参阅:https://aws.amazon.com/premiumsupport/knowledge-center/rds-instance-failed-state/
  2. 确保您的数据库实例允许连接。
  3. 解决潜在的 DNS 名称或端点问题
  4. 检查与您的多可用区部署关联的路由表
  5. 验证连通性

有关更详细的指南,请参阅此 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

希望这能帮助您解决问题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-25
    • 2021-04-02
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 2013-03-12
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多