DEV Community

Cover image for Deploying WordPress on AWS: Part 1 – Free-Tier RDS Setup
Ubayed Bin Sufian
Ubayed Bin Sufian

Posted on • Originally published at builder.aws.com

Deploying WordPress on AWS: Part 1 – Free-Tier RDS Setup

Why This Guide Exists

This is Part 1 of the "Deploying WordPress on AWS: A Beginner's Journey" series. Across this series, we'll go from an empty AWS account to a fully live WordPress site, step by step, with every beginner trap flagged along the way. (If you haven't secured your AWS account yet, start with the standalone guide: How to Set Up a Secure AWS Account and Avoid Beginner Mistakes.)

In this post, we'll launch the database WordPress needs to store posts, users, and settings; Amazon RDS running MySQL.

The RDS console looks simple on the surface, but the very first screen you see nudges you toward a database engine that isn't free. Getting this one choice wrong is the single most common way beginners accidentally rack up charges on their very first database.


Step 1: Avoid the "Express Configuration" Trap

When you open the Aurora and RDS console, you'll land on a page offering two large boxes at the top:

  • Create with express configuration — spins up an Aurora PostgreSQL Serverless database in seconds.
  • Create with full configuration — lets you pick the engine, instance size, and template yourself.

⚠️ Beginner Mistake #1: Clicking "Express Configuration"
This box looks like the easy, recommended path and that's exactly the problem. It quietly creates an Aurora Serverless database, which does not have a permanent free-tier option, and it defaults to PostgreSQL, while WordPress needs MySQL or MariaDB.

Always click Full configuration instead. This opens the complete setup form where you can explicitly choose MySQL and the Free Tier template.

RDS console landing page


Step 2: Choose Your Engine and Creation Method

On the Full Configuration form:

  • Under Engine options, select MySQL.
  • Under Choose a database creation method, you'll see two options: Full configuration and Easy create. Stick with Full configuration — it gives you visibility into every setting instead of hiding them behind defaults.
  • Under Templates, select Free tier. This automatically filters out multi-instance and high-availability options that fall outside the free tier, so you can't accidentally select something that costs money.

Engine options and Templates section with Free tier selected


Step 3: Configure Settings and Credentials

Scroll down to the Settings section:

  • DB instance identifier — give it a clear name, e.g., wordpress-db.
  • Master username — the default admin is fine to keep.
  • Credentials management — choose Self managed rather than AWS Secrets Manager. Managing your own password is simpler while you're learning, and avoids extra Secrets Manager costs later.
  • Master password — type a strong password and confirm it. Save this somewhere safe; you'll need it to connect WordPress to the database later.

Settings section with DB instance identifier and credentials fields


Step 4: Instance Size and Storage

  • Under DB instance class, confirm it's using a Burstable class like db.t3.micro or db.t4g.micro, this should be pre-selected automatically because you chose the Free Tier template.
  • Under Storage, set Allocated storage to 20 GiB — this is the maximum covered by the RDS free tier.
  • Uncheck "Enable storage autoscaling" if it's checked. Autoscaling can silently grow your storage past the free limit as your database fills up.

Instance class and storage configuration

⚠️ Beginner Mistake #2: Leaving Storage Autoscaling On
Autoscaling sounds helpful, but it means RDS can increase your allocated storage automatically without asking and any storage above 20 GiB is billed. Turn it off until you actually need it.


Step 5: Connectivity

  • Under Compute resource, select Don't connect to an EC2 compute resource. You'll connect your EC2 instance manually in the next post, doing it yourself teaches you how security groups actually work, which matters for everything else you'll build on AWS.
  • Set Public access to No, unless you have a specific reason to reach the database directly from your home computer. Keeping it private is the safer default.
  • Under VPC security group, choose Create new and give it a recognizable name like wordpress-db-sg.

Connectivity section with EC2 connection and public access options


Step 6: Additional Configuration (Don't Skip This)

Scroll to the bottom and click to expand Additional configuration. Most of this section is collapsed by default, but two fields matter a lot:

  • Initial database name — type wordpress. If you leave this blank, RDS creates the instance but not an actual database inside it, and you'll have to create one manually via the command line later.
  • Enable automated backup — uncheck this while learning. It keeps your account clean and avoids snapshot storage charges once you're past the free allowance.
  • Enable deletion protection — uncheck this so you can cleanly delete the database later once you're done practicing.

Additional configuration section showing Initial database name field

⚠️ Beginner Mistake #3: Forgetting the Initial Database Name
This single text field is easy to miss because it's tucked inside a collapsed section but skipping it means extra manual setup work later. Worth the extra 10 seconds now.


Step 7: Create the Database

Scroll to the very bottom and click the orange Create database button. RDS will take roughly 5–10 minutes to provision your instance.

Creating database status screen

While it spins up, here's a quick sanity check of what you should have configured:

One Thing to Watch Before Moving On

Before you launch your EC2 instance in the next post, check the Region shown in the top-right corner of your console right now, and use that exact same region when you create your EC2 instance. Mixing regions between RDS and EC2 is one of the most common and most confusing mistakes beginners run into, since resources in different regions can't privately talk to each other. We'll cover exactly what to do if this happens in the next post, but it's much easier to just get it right the first time.

Region selector in top-right of AWS Console


What's Next

Your free-tier MySQL database is now live. In Part 2, we'll launch an EC2 instance in the same region, open the right ports, and connect it securely to this database using security group rules.

RDS dashboard showing database status as 'Available'

Top comments (0)