wp db
Performs basic database operations using credentials stored in wp-config.php.
Subcommands
| Command | Description |
|---|---|
wp db check |
Checks the current status of the database. |
wp db clean |
Removes all tables with $table_prefix from the database. |
wp db cli |
Opens a MySQL console using credentials from wp-config.php. |
wp db columns |
Displays information about a given table. |
wp db create |
Creates a new database. |
wp db drop |
Deletes the existing database. |
wp db export |
Exports the database to a file or to STDOUT. |
wp db import |
Imports a database from a file or from STDIN. |
wp db optimize |
Optimizes the database. |
wp db prefix |
Displays the database table prefix. |
wp db query |
Executes a SQL query against the database. |
wp db repair |
Repairs the database. |
wp db reset |
Removes all tables from the database. |
wp db search |
Finds a string in the database. |
wp db size |
Displays the database name and size. |
wp db tables |
Lists the database tables. |
Examples
# Create a new database.
$ wp db create
Success: Database created.
# Drop an existing database.
$ wp db drop --yes
Success: Database dropped.
# Reset the current database.
$ wp db reset --yes
Success: Database reset.
# Execute a SQL query stored in a file.
$ wp db query < debug.sql
wp db check
Checks the current status of the database.
Runs mysqlcheck utility with --check using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Synopsis
wp db check [--dbuser=<value>] [--dbpass=<value>] [--<field>=<value>] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--dbuser=<value>] |
Username to pass to mysqlcheck. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysqlcheck. Defaults to DB_PASSWORD. |
[--<field>=<value>] |
Extra arguments to pass to mysqlcheck. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db check
Success: Database checked.
wp db clean
Removes all tables with $table_prefix from the database.
Runs DROP_TABLE for each table that has a $table_prefix as specified in wp-config.php.
Synopsis
wp db clean [--dbuser=<value>] [--dbpass=<value>] [--yes] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--dbuser=<value>] |
Username to pass to mysql. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysql. Defaults to DB_PASSWORD. |
[--yes] |
Answer yes to the confirmation message. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db clean --yes
Success: Tables dropped.
wp db cli
Opens a MySQL console using credentials from wp-config.php.
Synopsis
wp db cli [--database=<database>] [--default-character-set=<character-set>] [--dbuser=<value>] [--dbpass=<value>] [--<field>=<value>] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--database=<database>] |
Use a specific database. Defaults to DB_NAME. |
[--default-character-set=<character-set>] |
Use a specific character set. Defaults to DB_CHARSET when defined. |
[--dbuser=<value>] |
Username to pass to mysql. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysql. Defaults to DB_PASSWORD. |
[--<field>=<value>] |
Extra arguments to pass to mysql. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
# Open MySQL console
$ wp db cli
mysql>
wp db columns
Displays information about a given table.
Synopsis
wp db columns <table> [--format]
Parameters
| Parameter | Description |
|---|---|
<table> |
Name of the database table. |
[--format] |
Render output in a particular format. Default: table. Options: table, csv, json, yaml |
Examples
$ wp db columns wp_posts
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID | bigint(20) unsigned | NO | PRI | | auto_increment |
| post_author | bigint(20) unsigned | NO | MUL | 0 | |
| post_date | datetime | NO | | 0000-00-00 00:00:00 | |
| post_date_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
| post_content | longtext | NO | | | |
| post_title | text | NO | | | |
...
+-----------------------+---------------------+------+-----+---------------------+----------------+
wp db create
Creates a new database.
Runs CREATE_DATABASE SQL statement using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Synopsis
wp db create [--dbuser=<value>] [--dbpass=<value>] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--dbuser=<value>] |
Username to pass to mysql. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysql. Defaults to DB_PASSWORD. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db create
Success: Database created.
wp db drop
Deletes the existing database.
Runs DROP_DATABASE SQL statement using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Synopsis
wp db drop [--dbuser=<value>] [--dbpass=<value>] [--yes] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--dbuser=<value>] |
Username to pass to mysql. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysql. Defaults to DB_PASSWORD. |
[--yes] |
Answer yes to the confirmation message. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db drop --yes
Success: Database dropped.
wp db export
Exports the database to a file or to STDOUT.
Runs mysqldump utility using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php. Accepts any valid mysqldump flags.
Synopsis
wp db export [<file>] [--dbuser=<value>] [--dbpass=<value>] [--<field>=<value>] [--tables=<tables>] [--exclude_tables=<tables>] [--include-tablespaces] [--porcelain] [--add-drop-table] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[<file>] |
The name of the SQL file to export. If ‘-‘, then outputs to STDOUT. If omitted, it will be ‘{dbname}-{Y-m-d}-{random-hash}.sql’. |
[--dbuser=<value>] |
Username to pass to mysqldump. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysqldump. Defaults to DB_PASSWORD. |
[--<field>=<value>] |
Extra arguments to pass to mysqldump. |
[--tables=<tables>] |
The comma separated list of specific tables to export. |
[--exclude_tables=<tables>] |
The comma separated list of specific tables that should be skipped from exporting. |
[--include-tablespaces] |
Skips adding the default –no-tablespaces option to mysqldump. |
[--porcelain] |
Output filename for the exported database. |
[--add-drop-table] |
Include a DROP TABLE IF EXISTS statement before each CREATE TABLE statement. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
# Export database with drop query included
$ wp db export --add-drop-table
Success: Exported to 'wordpress_dbase-db72bb5.sql'.
# Export certain tables
$ wp db export --tables=wp_options,wp_users
Success: Exported to 'wordpress_dbase-db72bb5.sql'.
# Export all tables matching a wildcard
$ wp db export --tables=$(wp db tables 'wp_user*' --format=csv)
Success: Exported to 'wordpress_dbase-db72bb5.sql'.
# Export database to STDOUT.
$ wp db export -
-- MySQL dump 10.13 Distrib 5.7.19, for osx10.12 (x86_64)
...
wp db import
Imports a database from a file or from STDIN.
Runs SQL queries using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Synopsis
wp db import [<file>] [--dbuser=<value>] [--dbpass=<value>] [--<field>=<value>] [--skip-optimization] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[<file>] |
The name of the SQL file to import. If ‘-‘, then reads from STDIN. If omitted, it will look for ‘{dbname}.sql’. |
[--dbuser=<value>] |
Username to pass to mysql. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysql. Defaults to DB_PASSWORD. |
[--<field>=<value>] |
Extra arguments to pass to mysql. |
[--skip-optimization] |
When using an SQL file, do not include speed optimization such as disabling auto-commit and key checks. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db import wordpress_dbase.sql
Success: Imported from 'wordpress_dbase.sql'.
wp db optimize
Optimizes the database.
Runs mysqlcheck utility with --optimize=true using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Synopsis
wp db optimize [--dbuser=<value>] [--dbpass=<value>] [--<field>=<value>] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--dbuser=<value>] |
Username to pass to mysqlcheck. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysqlcheck. Defaults to DB_PASSWORD. |
[--<field>=<value>] |
Extra arguments to pass to mysqlcheck. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db optimize
Success: Database optimized.
wp db prefix
Displays the database table prefix.
Display the database table prefix, as defined by the database handler’s interpretation of the current site.
Synopsis
wp db prefix
Examples
$ wp db prefix
wp_
wp db query
Executes a SQL query against the database.
Executes an arbitrary SQL query using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Use the --skip-column-names MySQL argument to exclude the headers from a SELECT query. Pipe the output to remove the ASCII table entirely.
Synopsis
wp db query [<sql>] [--dbuser=<value>] [--dbpass=<value>] [--<field>=<value>] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[<sql>] |
A SQL query. If not passed, will try to read from STDIN. |
[--dbuser=<value>] |
Username to pass to mysql. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysql. Defaults to DB_PASSWORD. |
[--<field>=<value>] |
Extra arguments to pass to mysql. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
# Execute a query stored in a file
$ wp db query < debug.sql
# Query for a specific value in the database
$ wp db query 'SELECT option_value FROM wp_options WHERE option_name="home"' --skip-column-names
+---------------------+
| https://example.com |
+---------------------+
# Check all tables in the database
$ wp db query "CHECK TABLE $(wp db tables | paste -s -d, -);"
Multisite Usage
Please note that the global --url parameter will have no effect on this command. In order to query for data in a site other than your primary site, you will need to manually modify the table names to use the prefix that includes the site’s ID.
# Get the home option for your second site
$ wp db query 'SELECT option_value FROM wp_2_options WHERE option_name="home"' --skip-column-names
wp db repair
Repairs the database.
Runs mysqlcheck utility with --repair=true using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Synopsis
wp db repair [--dbuser=<value>] [--dbpass=<value>] [--<field>=<value>] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--dbuser=<value>] |
Username to pass to mysqlcheck. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysqlcheck. Defaults to DB_PASSWORD. |
[--<field>=<value>] |
Extra arguments to pass to mysqlcheck. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db repair
Success: Database repaired.
wp db reset
Removes all tables from the database.
Runs DROP_DATABASE and CREATE_DATABASE SQL statements using DB_HOST, DB_NAME, DB_USER and DB_PASSWORD database credentials specified in wp-config.php.
Synopsis
wp db reset [--dbuser=<value>] [--dbpass=<value>] [--yes] [--defaults]
Parameters
| Parameter | Description |
|---|---|
[--dbuser=<value>] |
Username to pass to mysql. Defaults to DB_USER. |
[--dbpass=<value>] |
Password to pass to mysql. Defaults to DB_PASSWORD. |
[--yes] |
Answer yes to the confirmation message. |
[--defaults] |
Loads the environment’s MySQL option files. |
Examples
$ wp db reset --yes
Success: Database reset.
wp db search
Finds a string in the database.
Searches through all of the text columns in a selection of database tables for a given string. Outputs colorized references to the string.
Defaults to searching through all tables registered to $wpdb. On multisite, this default is limited to the tables for the current site.
Synopsis
wp db search <search> [<tables>...] [--network] [--all-tables-with-prefix] [--all-tables] [--before_context=<num>] [--after_context=<num>] [--regex] [--regex-flags=<regex-flags>] [--regex-delimiter=<regex-delimiter>] [--table_column_once] [--one_line] [--matches_only] [--stats] [--table_column_color=<color_code>] [--id_color=<color_code>] [--match_color=<color_code>] [--fields=<fields>] [--format=<format>]
Parameters
| Parameter | Description |
|---|---|
<search> |
String to search for. The search is case-insensitive by default. |
[<tables>...] |
One or more tables to search through for the string. |
[--network] |
Search through all the tables registered to $wpdb in a multisite install. |
[--all-tables-with-prefix] |
Search through all tables that match the registered table prefix. |
[--all-tables] |
Search through ALL tables in the database, regardless of the prefix. |
[--before_context=<num>] |
Number of characters to display before the match. Default: 40 |
[--after_context=<num>] |
Number of characters to display after the match. Default: 40 |
[--regex] |
Runs the search as a regular expression (without delimiters). |
[--regex-flags=<regex-flags>] |
Pass PCRE modifiers to the regex search. |
[--stats] |
Output stats on the number of matches found, time taken, tables/columns/rows searched. |
[--format=<format>] |
Render output in a particular format. Options: table, csv, json, yaml, ids, count |
Examples
# Search through the database for the 'wordpress-develop' string
$ wp db search wordpress-develop
wp_options:option_value
1:http://wordpress-develop.dev
...
# Search using regular expressions with stats
$ wp db search 'https?://' --regex --stats
wp_comments:comment_author_url
1:https://wordpress.org/
...
Success: Found 99146 matches in 10.752s (10.559s searching). Searched 12 tables, 53 columns, 1358907 rows.
# Search for a string and print the result as a table
$ wp db search https://localhost:8889 --format=table --fields=table,column,match
+------------+--------------+-----------------------------+
| table | column | match |
+------------+--------------+-----------------------------+
| wp_options | option_value | https://localhost:8889 |
| wp_options | option_value | https://localhost:8889 |
| wp_posts | guid | https://localhost:8889/?p=1 |
| wp_users | user_url | https://localhost:8889 |
+------------+--------------+-----------------------------+
wp db size
Displays the database name and size.
Synopsis
wp db size [--size_format=<format>] [--tables] [--human-readable] [--format=<format>] [--scope=<scope>] [--network] [--decimals=<decimals>] [--all-tables-with-prefix] [--all-tables]
Parameters
| Parameter | Description |
|---|---|
[--size_format=<format>] |
Display the database size in a specific format. Default: b. Options: b (bytes), kb, mb, gb, tb |
[--tables] |
Show information for each table. |
[--human-readable] |
Display the database size in a human readable format. |
[--format=<format>] |
Render output in a particular format. Default: table. Options: table, csv, json, yaml |
[--scope=<scope>] |
Filter tables by scope. Options: all, global, blog, old |
[--network] |
Show the database sizes for all network sites. |
[--decimals=<decimals>] |
Number of decimals to display. Default: 0 |
[--all-tables-with-prefix] |
Show all tables that match the prefix, even if not registered. |
[--all-tables] |
Show ALL tables in the database. |
Examples
$ wp db size
+------------------+------+
| Name | Size |
+------------------+------+
| wordpress_dbase | 128M |
+------------------+------+
$ wp db size --tables
+-----------------------+-------+
| Name | Size |
+-----------------------+-------+
| wp_comments | 64KB |
| wp_options | 128KB |
| wp_posts | 1MB |
...
+-----------------------+-------+
wp db tables
Lists the database tables.
Synopsis
wp db tables [<table>...] [--scope=<scope>] [--network] [--all-tables-with-prefix] [--all-tables] [--format=<format>]
Parameters
| Parameter | Description |
|---|---|
[<table>...] |
List tables based on wildcard search pattern or specific table name. |
[--scope=<scope>] |
Can be all, global, blog, or old tables. Default: all |
[--network] |
List all network tables based on multisite setup. |
[--all-tables-with-prefix] |
List all tables that match the table prefix even if not registered on $wpdb. |
[--all-tables] |
List all tables in the database, regardless of the prefix. |
[--format=<format>] |
Render output in a particular format. Default: list. Options: list, csv |
Examples
# List tables for a single site, delimited by a space.
$ wp db tables --format=csv
wp_users,wp_usermeta,wp_posts,wp_comments,wp_links,wp_options,wp_postmeta,wp_terms,wp_term_taxonomy,wp_term_relationships,wp_termmeta,wp_commentmeta
# List all tables with wildcard
$ wp db tables 'wp_user*'
wp_users
wp_usermeta