为什么我不能在Amazon RDS上远程访问MySQL?

为什么我不能在Amazon RDS上远程访问MySQL?,mysql,amazon-web-services,remote-access,amazon-rds,pythonanywhere,Mysql,Amazon Web Services,Remote Access,Amazon Rds,Pythonanywhere,因此,我已经为我的rds实例创建了一个新的安全组rds_访问,其入站->>源参数设置为0.0.0/0,并在rds仪表板上的“安全组”部分更新了该实例:rds_访问(sg xxx)(活动) 在连接的MySQL工作台“编辑”部分中,在“远程管理器”选项卡中,我已将“本机Windows远程管理”单选按钮的值设置为活动,“主机名”参数的值设置为0.0.0 实例和数据库连接成功 在我运行在Python上的web应用程序中,仍然出现以下错误: 操作错误:(2003,“无法连接到'db.cx0stetemb8

因此,我已经为我的rds实例创建了一个新的安全组
rds_访问
,其入站->>源参数设置为
0.0.0/0
,并在rds仪表板上的“安全组”部分更新了该实例:rds_访问(sg xxx)(活动)

在连接的MySQL工作台“编辑”部分中,在“远程管理器”选项卡中,我已将“本机Windows远程管理”单选按钮的值设置为活动,“主机名”参数的值设置为
0.0.0

实例和数据库连接成功

在我运行在Python上的web应用程序中,仍然出现以下错误:

操作错误:(2003,“无法连接到'db.cx0stetemb8k.eu-central-1.rds.amazonaws.com'上的MySQL服务器”([Errno 111]连接被拒绝))

在PythonyWhere上上传我的应用之前,我已经在
localhost
上测试过了,一切正常。我还重新启动了RDS实例和MySQL数据库

请告诉我我做错了什么,以及如何解决这个问题

更新: 为了连接到MySQL服务器,我使用了
flask MySQL
。下面是代码片段:

 from flaskext.mysql import MySQL  
 api = Api(app)

 mysql = MySQL()
 app.config['MYSQL_DATABASE_USER'] = 'user'
 app.config['MYSQL_DATABASE_PASSWORD'] = 'password'
 app.config['MYSQL_DATABASE_DB'] = 'bachelor_diploma_db'
 app.config['MYSQL_DATABASE_HOST'] = 'bachelor-diploma-db.cx0stetemb8k.eu-central-1.rds.amazonaws.com'

 mysql.init_app(app)
然后在我使用的方法中:

conn = mysql.connect()

您需要连接到您的RDS实例的实际公共可见端点。
0.0.0.0/0
只是一个占位符,表示任何IP地址。从RDS控制台中,查找详细信息。在“连接”下,您应该会看到一个端点,看起来像这样:

mysql–instance1.123456789012.us-east-1.rds.amazonaws.com
mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com
    -u ec2-user -pPASSWORD yourdb
从命令行中,您的连接字符串如下所示:

mysql–instance1.123456789012.us-east-1.rds.amazonaws.com
mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com
    -u ec2-user -pPASSWORD yourdb
如果上述方法不能解决问题,那么您可能还需要确保端口3306(由MySQL使用)不在防火墙后面


有关更多信息,请参阅。

可能是因为您使用的是免费Python,其中帐户和免费帐户只能通过http连接到特定的站点白名单。

运行RDS实例的子网也需要是公共的,这可以通过在RDS中创建一个子网组并向其中添加公共子网来实现,我花了数小时的时间才解决了这个问题。

您可能想向我们展示连接MySQL所使用的Python代码。只需阅读相关的pythonAnywhere docs,我想这就是原因。谢谢。@ViktorKonstantinov你能确认这解决了你的问题吗,在这种情况下,我可以继续删除我的答案吗?