// Cloud & AWS

Amazon RDS Setup with Free Credits: MySQL in 6 Minutes

Ghost Dev Explains
Updated May 6, 2026
4 min readbeginner
// quick answer

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.

// video

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.micro or db.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:

  1. The security group allows your source IP on the database port.
  2. The database is in a subnet your source can route to.
  3. You are using the endpoint, not the instance name.
  4. 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.

// key takeaways
  • 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.
// FAQ
Is RDS free forever?
No. The free tier is a limited monthly allowance for new accounts. After it ends, or if you exceed the limits, you pay hourly.
Which engine should I pick?
MySQL and PostgreSQL are both common. Pick the one your application already uses. The free-tier rules are similar.
Can I make the database public?
You can, but you should not for anything real. Keep public access off and connect from the same VPC or through a bastion.
Why am I charged when the instance is stopped?
Stopped instances still incur storage charges, and RDS automatically restarts an instance after seven days. Delete it if you are done.