Unable to connect to RDS MySQL database from MySQL Workbench - mysql

I have created a RDS MYSQL database and have set public access , modified VPC security groups enter link description here
but I am still not able to connect to the MYSql. Telnet also fails Could not open connection to the host, on port 3306: Connect failed
Connection from mysql workbench gives the following error Can't connect to MySQL server at .... (10061)
I've checked various posts in stack exchange on this error . But still unable to figure out what is missing.
Kindly let me know what is missing.

Some things to check:
The RDS instance should be configured as publicly accessible
The RDS instance should be launched in a public subnet
The Security Group should permit Inbound access for your IP address for port 3306
Your network must not be blocking the connection (try from another network, such as work/home or tethered via your phone)

I had the same problem and added a custom inbound rule in my security group with the port number from my database and the source set to my IP. this fixed it for me and telnet started working.

Related

AWS - How to use privatehosted zone URL instead of hostname for connecting RDS instance?

Mysql RDS is sitting in Private subnet, I use below string to connect Mysql.
mysql -uroot-h<HOSTNAME>.rds.amazonaws.com -p<PWD>
Now I have created a private hosted zone for db.example.com in route53 with RDS hostname as a cname record.
if I tried to use the below string, I'm getting below error.
mysql -u root -hread.db.devtest.example.com -p<PWD>
ERROR 2005 (HY000): Unknown MySQL server host
Anyone configured above setup and found a way to connect RDS through private hosted URL as hostname?? TIA..
Note: It worked.. Already had dns resolution and dns hostname enabled in the custom VPC.. I was trying to connect DB from my local through VPN, actually dns resolution wont work on resources that sitting other side of VPN. I logged into one of the instance in the VPC and tried to connect with custom hostname that I created and it's working. Thanks a lot for your inputs.
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-private-hosted-zones

Can't connect to AWS RDS MySQL server, ERROR 2003 (HY000)

I have an AWS RDS database I can't connect, I get the following error:
mysql -h rds.eu-west-1.rds.amazonaws.com -P 3306 -u admin
ERROR 2003 (HY000): Can't connect to MySQL server on 'rds.cfckm0d26fsq.eu-west-1.rds.amazonaws.com:3306' (60)
The RDS security group allows all traffic for my IP as well explicit opens 3306
Also I have my RDS as Publicly accessible (which I don't like)
To travelshoot, I also open my security group to the world: 0.0.0.0/0, but the error remains
You needn't keep the security permissions Public.
You can just add the public IP of the inbound traffic to the Security Group for the RDS DB you are using. When you open the RDS DB instance, open the VPC Security Group --> Security Group ID --> Edit Inbound Rules --> Add your IP .
This solved my issue.
As I was on a private subnet, t didn't matter if I opened ports to the world. To trouble shoot I telnet the RDS
telnet rds.eu-west-1.rds.amazonaws.com 3306
And I saw there was no connectivity. So I created an EC2 within the same subnet and from it connected to the RDS.
NOTE: no need to have all traffic open (as I saw on my posts and youtube), just 3306 to private or requesting ip and for port 3306. Also no need to make the RDS public

Access Lightsail Instance's database with MySQL Workbench

I have an Amazon Lightsail Ubuntu multi WordPress site set up with bitnami stack.
I'm looking for a way to access the Instance's database on Amazon Lightsail with MySQL Workbench remotely.
Please note that I do not have a seperate Lightsail database, as I'm trying to do things as cheaply as possible at the moment. So the following guide is not applicable to me.
Connecting to your MySQL database in Amazon Lightsail
According the wp-config.php MySQL database is using localhost:3306
I have static IP address 3.230.xxx.xxx. I have taken the DB username and password from the wp_config.php file.
I've entered the details.
I wonder if anybody else has managed to connect to an Instance's database, rather than a seperate database.
If this is not possible I wonder if there are any suggestions as how to best access this Instance's database remotely.
Found the answer using a similar youtube video which is used to connect to phpMyAdmin.
https://www.youtube.com/watch?v=9VdcQLDmYII
Basically you need to use Putty SSH tunneling in order to connect to the MySQL instance
First I added a new connection in Putty, make sure port 22 is open on
the LightSail firewall
Go to the Connection -> SSH -> Auth tab on the right hand side menu
Enter your SSH key which is downloaded from the Lightsail dashboard,
it will need to be converted in the standard recognised by putty
Go to Connections -> Data tab on the right hand side menu. Add a new
forwarded port we are forwarding localhost:3306 on the server to a
port on our machine 2222
Start the connection via Putty.
Now in MySQL WorkBench go to the connection to database windows.
Enter the port 2222 I entered the DB user and Password from
wp-config.php file and was able to successfully connect.
Also found a second method
Within the MySQL Workbench you can change the connection method to `Standard TCP/IP over SSH'. Gave the SSH key and the relevant details on connection was accepted
Here is what you need to remotely connect MySQL on Lightsail.
https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-connecting-to-your-mysql-database
There are 3 steps:
get the endpoint link
enable public mode
configure MySQL workbench
Yes I have - after a marathon tech support session with AWS :)
Although the Lightsail firewall may say port 3306 is open, the server instance itself may have its own firewall settings which close it. On my case teh AMI that was used to set up the instance was configured that way
I my case it was Ubuntu but here is the summary of the advice I got from AWS--
We have connected to the instance via SSH using the user-name 'xxxxxx' from terminal.
--
ssh -l xxxxx 34.xxx.xxx.221
Checked and confirmed that mysql is running on the instance.
systemctl status mysql
Confirmed the port on which mysql is running.
netstat -plnae | grep 'pid'
Checked the 'ufw' firewall rules and noticed that 3306 is not allowed.
ufw status
Opened the port 3306 on ufw firewall
ufw allow 3306
After performing these steps you were able to establish connection to your database
hth

Why I can not get remote access to MySQL on Amazon RDS?

So, I have already created a new security group rds_access for my RDS instance with Inbound-> >Source parameter set to 0.0.0.0/0, and updated the instance so in the 'Security groups' section on RDS Dashboard I have: rds_access (sg-xxx)( active )
In MySQL Workbench "Edit" section of my connection, in the tab "Remote Manager" I have set the value of "Native Windows remote management" radio button to active and "Hostname" parameter to 0.0.0.0.
The instance and the database connect successfully.
In my web-application running on pythonanywhere I'm still getting this error:
OperationalError: (2003, "Can't connect to MySQL server on 'bachelor-diploma-db.cx0stetemb8k.eu-central-1.rds.amazonaws.com' ([Errno 111] Connection refused))
Before uploading my app on pythonanywhere, I've tested it on localhost and everything was working fine. Also I have rebooted both the RDS instance and MySQL database.
Please, tell me what am I doing wrong and how to fix this issue?
UPDATE:
In order to connect to MySQL server I use flask-mysql. Here's the code snippet:
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)
and then in methods I use:
conn = mysql.connect()
Probably because you're on a free PythonAnywhere account and free accounts can only connect out on http(s) to a specific whitelist of sites.
You need to connect to the actual publicly visible endpoint for your RDS instance. 0.0.0.0/0 is just a placeholder meaning any IP address. From the RDS console, find the details information. Under "Connect" you should see an endpoint looking something like this:
mysql–instance1.123456789012.us-east-1.rds.amazonaws.com
From the command line your connection string would look something like this:
mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com
-u ec2-user -pPASSWORD yourdb
If the above does not resolve the problem, then you may also want to make sure that port 3306 (used by MySQL) is not behind a firewall.
See the AWS documentation for more information.
The subnets that the RDS instance is running in also needs to be public ,this can be done by creating a subnet group in rds and adding public subnets to it, took me hours of fiddling to work this one out

Unable to connect to MySQL AWS RDS instance from local MySQL

I have created an MySQL RDS instance with VPC. Now i am trying to connect to that RDS instance from my Ubuntu 12.04 machine using MySQL client by following code:
mysql -u uname -h test.c6tjb4nxvlri.us-west-2.rds.amazonaws.com -P 3306 -p
But i am getting this error:
ERROR 2003 (HY000): Can't connect to MySQL server on 'test.c6tjb4nxvlri.us-west-2.rds.amazonaws.com' (110)
I searched about this error and everywhere solution came out like
Go to the Instances
Find the security group
Change the inbound rules of that security group by
Adding source of user machine public ip or
Set source ip as 0.0.0.0/16
I tried everything but still same error occures. Any explanations?
The problem was in subnet. Subnet that you created must be publicly accessible.
In On-premises MySQL Workbench, use TCP/IP SSH Tunneling option. Make sure you have EC2 instance endpoint and keypair file.
In SSH endpoint - add your EC2 instance endpoint and for SSH password, browse your keypair. Rest of configurations for MySQL. Like MySQL's endpoint, username, password, port and schema name.
Test your connection it will return success. If not, check RDS Security group. In Security group, you open MySQL port for all IP address. Try it! it will work. Once connection was success, all schema are visible in MySQL Workbench.
RDS DB instance need not to be in public subnet and it is not best practice to do. Always keep RDS DB instance in private subnet and open traffic for EC2 instance.
When you use TCP/IP SSH Tunneling, request traffic will send through EC2 instance to RDS DB instance.
HTH.