Skip to main content

wp db create

Overview

Create the MySQL database defined in wp-config.php from the command line. Part of the minimal WordPress provisioning sequence: wp config createwp db createwp core install.

What It Does

wp db create reads the DB_NAME (and optionally DB_HOST, DB_USER, DB_PASSWORD, DB_CHARSET, DB_COLLATE) from wp-config.php and runs CREATE DATABASE IF NOT EXISTS on the MySQL server. No need to log into MySQL manually.

Syntax

wp db create [--dbuser=<value>] [--dbpass=<value>]

Options & Flags

FlagDescription
--dbuser=VALUEOverride DB user from wp-config.php
--dbpass=VALUEOverride DB password

Basic Usage

Create the database

wp db create

Output on success:

Success: Database created.

If database already exists:

ERROR 1007 (HY000): Can't create database 'wpdb'; database exists
Error: Cannot proceed, as the database 'wpdb' exists.

Prerequisites

wp-config.php must exist with valid DB connection details before running this command:

# Correct provisioning order:
wp core download
wp config create --dbname=mydb --dbuser=wpuser --dbpass=secret
wp db create # ← this step
wp core install ...

Real-World Scenarios

Scenario 1: Full fresh install pipeline

#!/bin/bash
cd /var/www/html
wp core download --locale=en_US
wp config create \
--dbname="${DB_NAME}" \
--dbuser="${DB_USER}" \
--dbpass="${DB_PASS}" \
--dbhost="${DB_HOST:-localhost}"
wp db create
wp core install \
--url="${SITE_URL}" \
--title="${SITE_TITLE}" \
--admin_user="${ADMIN_USER}" \
--admin_password="${ADMIN_PASS}" \
--admin_email="${ADMIN_EMAIL}" \
--skip-email

Scenario 2: Docker container initialization

# entrypoint.sh
if ! wp core is-installed --allow-root 2>/dev/null; then
wp config create --dbname=wp --dbuser=root --dbpass=secret --dbhost=db --skip-check
wp db create
wp core install --url=http://localhost --title=DevSite \
--admin_user=admin --admin_password=admin --admin_email=dev@localhost --skip-email
fi

Scenario 3: Staging environment creation

# Read from config file
wp config create --dbname=staging_wp --dbuser=stg_user --dbpass=stg_pass --dbhost=127.0.0.1
wp db create
echo "Staging DB 'staging_wp' created ✅"

Best Practices

  1. Always create wp-config.php firstwp db create reads credentials from it.
  2. Use a dedicated DB user per site — not the MySQL root user.
  3. Verify the DB was created with wp db tables or wp db size after creation.
  4. Use IF NOT EXISTS semantics are built in — the command is idempotent when the DB already exists (it will warn, not crash silently).

Troubleshooting

ProblemCauseFix
Access deniedMySQL user lacks CREATE privilegeGrant CREATE to the DB user
Database already exists errorRe-running provisioning scriptSkip with a conditional: wrap in wp db check or wp core is-installed
No wp-config.php foundRunning from wrong directorycd /var/www/html first

Quick Reference

wp db create                           # Create DB from wp-config.php
wp db drop # Delete DB (destructive)
wp db reset # Drop + recreate all tables

Next Steps

  • wp core install — run the WordPress installer after creating the DB.
  • wp db tables — verify the database was created correctly.
  • wp db drop — drop the database when decommissioning a site.