Amazon RDS Setup with Free Credits: MySQL in 6 Minutes
Create an RDS MySQL instance on the free-tier template with a small instance class and 20 GB storage, then connect using the endpoint and keep autoscaling and public access off.

RDS is the managed database service in AWS. You pick an engine, an instance size, and a network, and AWS handles backups, patching, and the underlying server. The free tier makes it a good place to learn, as long as you stay inside the limits.
This walkthrough creates a small MySQL database, connects to it, and covers the settings that cause surprise bills.
Before you start
- An AWS account with free-tier credits or a new-account allowance
- A billing alarm, so you notice charges early
- The database name, username, and password you plan to use
Create the billing alarm first. Billing is the one thing you do not want to discover at the end of the month.
Step 1: Create the database
Open the RDS console and choose Create database.
- Creation method: Standard create
- Engine: MySQL (or PostgreSQL)
- Template: Free tier
- Deployment: Single DB instance
The free-tier template preselects a small instance class and disables features that cost extra. If the template is not available, set the values manually.
Step 2: Free-tier settings
Use these values as a baseline:
- Instance class:
db.t3.microordb.t4g.micro - Storage: 20 GB, general purpose
- Storage autoscaling: off
- Multi-AZ: off
- Backup retention: 7 days or less
- Performance Insights: off unless you need it
The free tier covers a limited number of instance hours and a limited amount of storage per month. One small instance is enough for learning.
Step 3: Name and credentials
Set a DB identifier you will recognize, such as ghostdev-mysql. Use a strong master password and store it in a password manager.
Under additional configuration, set an initial database name, for example appdb. If you skip this, you can create the database later after connecting.
Step 4: Network and security
For a first test:
- VPC: default
- Public access: No
- Security group: create a new one
- Port: 3306 for MySQL, 5432 for PostgreSQL
If you need to connect from your laptop, do not open the database to the world. Use an SSH tunnel through a bastion host, or connect from a service inside the same VPC. For a throwaway test, you can temporarily allow your own IP, then remove the rule.
Step 5: Create and wait
Create the database. Provisioning takes a few minutes. When the status is Available, open the instance and copy the Endpoint and port.
Step 6: Connect
The endpoint is the hostname, not a URL. A MySQL connection looks like this:
mysql -h YOUR_ENDPOINT -P 3306 -u admin -p appdb
If your client cannot reach the database, check:
- The security group allows your source IP on the database port.
- The database is in a subnet your source can route to.
- You are using the endpoint, not the instance name.
- The username and database name are correct.
Once connected, create a table and insert a row to confirm writes work.
Keeping it free
- Delete the instance when you are done. Snapshots can also cost money.
- Do not enable Multi-AZ on the free tier.
- Do not turn on storage autoscaling unless you are watching the bill.
- Keep backups short.
- Use one database, not one per experiment.
- Set an AWS Budget alert at a low threshold.
Stopping an instance is not a permanent solution. RDS restarts stopped instances after seven days, and storage is still billed while stopped.
Common errors
- Access denied: wrong username, password, or database name.
- Connection timed out: security group or network route.
- Too many connections: the micro instance has a small connection limit.
- Storage full: the instance stops accepting writes. Increase storage or clean up data.
- Unexpected charge: a snapshot, a second instance, or autoscaling.
Final thoughts
RDS is a good way to learn managed databases without running a server yourself. Use the free-tier template, keep the instance small, leave public access off, and delete it when the experiment ends. The setup takes minutes. The billing discipline is the part that matters.
- Use the free-tier template and a micro instance class.
- Keep storage at 20 GB and turn off storage autoscaling.
- Disable public access and use a security group rule for your app.
- Connect with the endpoint, port, username, and password.
- Set a billing alarm and delete the instance when you finish.