How to Fix “Error Establishing a Database Connection” in WordPress – Full Step-by-Step Guide
What Does “Error Establishing a Database Connection” Mean?
The error “Error Establishing a Database Connection” in WordPress occurs when the application is unable to communicate with the MySQL database. Without access to the database, WordPress cannot retrieve content, resulting in a completely blank site with only an error message displayed.

This issue affects:
- The frontend (public view)
- The backend (/wp-admin)
- Or both simultaneously
Why Does This Error Occur? (Common Causes)
Cause | Explanation |
---|---|
Incorrect database credentials | Mismatched database name, username, password, or hostname in wp-config.php |
MySQL server is down or unresponsive | The database service on the server has crashed or is overloaded |
Corrupted database | Tables in the database are damaged or missing |
Plugin or theme conflict | A poorly coded or incompatible plugin/theme disrupts the database connection |
Server resource limits | Insufficient memory or CPU on the hosting environment |
File permission issues or malware | Core files tampered with or inaccessible due to attack or misconfiguration |
Step-by-Step Guide to Fix “Error Establishing a Database Connection”
This guide is structured for beginners and advanced users alike. Each step is tested, practical, and safe.
1. Verify Your Database Credentials in wp-config.php
This is the most common reason for database connection failures.
- Access your WordPress root directory via FTP or File Manager in cPanel.
- Open the file named wp-config.php.
- Locate the following lines:
define( 'DB_NAME', 'your_database_name' );
define( 'DB_USER', 'your_database_user' );
define( 'DB_PASSWORD', 'your_database_password' );
define( 'DB_HOST', 'localhost' );
Code language: JavaScript (javascript)
- Confirm that:
DB_NAME matches the exact name of your MySQL database.
DB_USER and DB_PASSWORD are correct.
DB_HOST is usually localhost, but some hosts require a custom value (e.g., an IP address or socket path).
Code language: JavaScript (javascript)
Note: You can cross-check this information inside cPanel > MySQL Databases.
2. Test Database Connection Manually
To eliminate WordPress as the source of the issue, create a simple PHP script to test the connection.
Create db-test.php with the following:
<?php
$link = mysqli_connect('localhost', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if (!$link) {
die('Connection failed: ' . mysqli_connect_error());
}
echo 'Database connection successful!';
mysqli_close($link);
?>
Code language: HTML, XML (xml)
- Replace credentials accordingly.
- Upload this file to your website’s root folder.
- Visit https://yourdomain.com/db-test.php.
Interpret results:
- If the message shows “Database connection successful!” → The issue is inside WordPress.
- If the script fails → Your credentials or MySQL server is incorrect/unavailable.
3. Repair a Corrupted WordPress Database
If your error looks like this:
One or more database tables are unavailable. The database may need to be repaired.
Then database corruption is likely.
Enable repair mode:
Add this line to wp-config.php:
define( 'WP_ALLOW_REPAIR', true );
Code language: JavaScript (javascript)
Visit:
https://yourdomain.com/wp-admin/maint/repair.php
Code language: JavaScript (javascript)
Choose:
- Repair Database – for basic fix
- Repair and Optimize – for deeper optimization
⚠️ Important: Remove the WP_ALLOW_REPAIR line after completing the process for security.
4. Check if the MySQL Server is Down
Sometimes, the server hosting the database may be down or overloaded.
Try accessing phpMyAdmin from your hosting panel.
- If phpMyAdmin loads → MySQL is working.
- If it doesn’t → the server may be offline.
If you’re on VPS or dedicated hosting:
sudo service mysql restart
If you’re on shared hosting, contact support immediately.
5. Check User Privileges
Your database user may not have the correct permissions to access the database.
✅ In cPanel:
- Go to MySQL Databases.
- Ensure the User is added to the Database.
- Grant All Privileges.
6. Disable Plugins and Switch Themes Temporarily
A misbehaving plugin or theme may cause the error.
✅ Disable plugins:
- Rename the /wp-content/plugins/ folder to /plugins-disabled/.
- If the site loads, reactivate plugins one by one to find the faulty one.
✅ Switch theme:
- Rename the active theme folder in /wp-content/themes/ to something else.
- WordPress will revert to a default theme like twentytwentyfour.
7. Increase PHP Memory Limit
If WordPress doesn’t have enough memory to process a database query, it may fail silently.
✅Edit wp-config.php:
define( 'WP_MEMORY_LIMIT', '256M' );
Code language: JavaScript (javascript)
✅ Or edit .htaccess:
php_value memory_limit 256M
8. Check for Malware or File Corruption
Malware may inject code or change DB credentials silently.
✅ Use a security plugin:
- Wordfence Security
- MalCare
- iThemes Security
Also check wp-config.php and index.php for strange or unfamiliar code.
9. Restore from a Backup (If All Else Fails)
If the database is unrecoverable or credentials lost:
Restore from a known good backup.
Use backup tools like:
- UpdraftPlus
- JetBackup (from cPanel)
- BlogVault
- Host-provided automatic backups
How to Prevent This Error in the Future
Action | Why It Helps |
---|---|
Schedule regular backups | Ensures recovery even in worst-case scenarios |
Use a trusted hosting provider | Stable, optimized MySQL environment |
Keep WordPress core and plugins updated | Reduces risk of compatibility or code issues |
Limit plugins to essential ones | Fewer chances of database-related errors |
Monitor uptime and server health | Tools like Jetpack Monitor or UptimeRobot notify you immediately |
When to Contact Your Web Host
If:
- You can’t access phpMyAdmin
- Manual test connection fails
- You suspect MySQL server downtime
- You don’t have access to change configurations
Then it’s time to escalate the issue to your hosting provider. Provide them:
- A copy of your wp-config.php DB section
- The output of your manual test
- Any recent changes or error logs
Conclusion
The “Error Establishing a Database Connection” is one of the most alarming issues in WordPress—but it doesn’t have to be. With a structured approach—starting from credentials to server diagnostics—you can usually resolve it within minutes.
Always keep backups, monitor your site’s health, and avoid making live changes without a staging environment.