1
votes

Problem

I launched a MySQL RDS instance and was able to successfully connect to it using MySQL Workbench. However, I am still not able to connect to it from my local workstation using the following URI:

'mysql+pymysql://user:password@db_identifier.XXXXXXXXXX.us-east-1.rds.amazonaws.com:3306/db_name'

or the same URI without the port:

'mysql+pymysql://user:password@db_identifier.XXXXXXXXXX.us-east-1.rds.amazonaws.com/db_name'

The error that I receive when I specify this as my database URI and execute a db.create_all() command is:

sqlalchemy.exc.OperationalError: 
(pymysql.err.OperationalError) 
(2003, "Can't connect to MySQL server on 'db_identifier.XXXXXXXXXX.us-east-1.rds.amazonaws.com' 
([WinError 10060] A connection attempt failed because the connected party did not 
properly respond after a period of time, or established connection failed because 
connected host has failed to respond)")

Question

What can I do to connect using pymysql? And why would it connect with MySQL Workbench and not through this URI?

Context

I am following the tutorial here. This uses SQLAlchemy to execute the SQL statements in Python.

The RDS instance (and its associated subnet/VPC) have the following:

  • a security group open on port 3306
  • NACL rules that allow incoming and outgoing traffic
  • Public Accessibility set to "Yes"
1
And if you just try regular pymysql (not using sqlalchemy) or even cli mysql client, does it all work? Just wonder if this is sqlalchemy specific issue only, or has a wider scope.Marcin

1 Answers

0
votes

Check my answer on this post, it could be something about the "Public accesibility" option in your rds "Connectivity and Security" section as described here;

https://stackoverflow.com/a/63514997/2934184