MySQL is the database management system used by WordPress to store and retrieve your blog information. It acts as a filing cabinet for your website and is pronounced ‘my sequel’.
The database application is currently owned by Oracle Corporation and is open source software licensed under the GPL and available for free.
While you can use WordPress without knowing how to use MySQL, a basic understanding can help you troubleshoot problems with your WordPress site.
What Is a Database?
MySQL is a relational database management system that’s capable of handling multiple users and databases. It runs as a server and is installed on your WordPress hosting server.
Think of it as a digital filing cabinet that organizes and stores all of the data on your website.
Information is retrieved, added, and deleted from tables in the database using a special programming language called SQL, or Structured Query Language. A SQL instruction to retrieve data is known as a query.
A typical MySQL query looks like this:
SELECT * FROM wp_posts WHERE ID = 23;
You don’t need to understand how databases work or learn the SQL language to use WordPress. All of this happens automatically behind the scenes. However, a knowledge of MySQL can help with troubleshooting.
You can fix many WordPress errors by working directly with the database, especially when you’re unable to log in to the WordPress admin area. For example, you can reset a WordPress password, add an admin user, and change the WordPress email address.
You can access your MySQL database using phpMyAdmin. This is a web application that lets you manage MySQL databases using a web browser. You’ll find it in your web hosting provider’s control panel.
To learn more about databases and how to use them, see our beginners guide on WordPress database management with phpMyAdmin.
How Does WordPress Use MySQL?
WordPress stores a great deal of information in a database, including posts, pages, comments, categories, tags, custom fields, users, and other WordPress settings.
That’s why, when you first install WordPress, it asks you to provide a database name, host, username, and password.
This information is stored in the configuration file called wp-config.php.
During the installation, WordPress uses the information you provide about the database to create tables and store default installation data inside those tables.
Each WordPress installation starts with 12 default tables in the database. These contain data for different sections, features, and functionality of WordPress.
Currently, a default WordPress installation creates the following tables:
wp_commentmeta
contains meta information about commentswp_comments
contains comments and the comment author’s detailswp_links
manages blogrolls created by earlier versions of WordPresswp_options
contains most of the site wide WordPress settingswp_postmeta
contains meta information about posts, pages, and custom post typeswp_posts
contains your posts, pages, custom post types, and revisionswp_termmeta
contains metadata for terms under custom taxonomieswp_terms
contains terms under taxonomies, such as each category and tagwp_term_relationships
manages the relationships between post types and termswp_term_taxonomy
defines taxonomies to differentiate between categories and tagswp_usermeta
contains meta information about registered userswp_users
contains user information including usernames and passwords
The wp_
before each table name is the default database prefix. You might like to choose a different prefix during the WordPress installation to improve the security of your website.
Because your WordPress content is stored in MySQL, your website backup solution will need to make a copy of your database tables as well as the files stored in your media library, themes and plugins.
Backup plugins such as UpdraftPlus will automatically send complete backups of your WordPress files and database to a remote location. You can learn how to set it up by following our guide on how to backup and restore your WordPress site with UpdraftPlus.
How MySQL Affects Website Performance
MySQL runs on your web server as an application, so requires more resources when more users visit your website. That’s because each time a user visits your website, WordPress has to fetch the information from the database before the web page is sent to the user’s browser.
This makes your website load slower when a lot of users are visiting it at the same time.
Most websites address this by using a WordPress caching plugin. These plugins store frequently requested web pages so that your database doesn’t have to be queried as often. As a result, your website runs faster.
We recommend using either WP Rocket (premium) or WP Super Cache (free). Many WordPress hosting companies like Bluehost and SiteGround offer caching solutions as well.
You can follow our guide on how to install and set up WP Super Cache on your WordPress site to see how easy it is to add a caching solution to your website.
Running MySQL on Your Computer
If you wish to run WordPress locally on your computer, then you will need to run the same software as your WordPress hosting provider. This includes Apache (the webserver software), MySQL (the database) and PHP (the programming language).
Luckily, software stacks like WAMP (for Windows), MAMP (for Mac), LAMP (for Linux) and XAMPP (cross platform) makes installation easy.
We hope this article helped you learn more about MySQL in WordPress. You may also want to see our Additional Reading list below for related articles on useful WordPress tips, tricks, and ideas.
If you liked this guide, then please consider subscribing to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
Additional Reading
- How WordPress Actually Works Behind the Scenes (Infographic)
- How to Change the WordPress Admin Email (3 Methods)
- Query
- How to Reset a WordPress Password from phpMyAdmin
- Database
- 50 Most Common WordPress Errors and How to Fix Them
- Apache
- Beginner’s Guide to WordPress Database Management With phpMyAdmin
- How to Add an Admin User to the WordPress Database via MySQL