Beginner's Guide for WordPress / Start your WordPress Blog in minutes

How to Fix the Error Establishing a Database Connection in WordPress

Are you seeing the ‘Error establishing a database connection’ notice on your WordPress website? It is a fatal error that makes your WordPress website inaccessible to the users.

This error occurs when WordPress is unable to make a connection to the database. A number of things can affect your WordPress database connection which makes it a bit difficult for beginners to troubleshoot.

In this article, we will show you how to easily fix the error establishing a database connection in WordPress.

Fixing the database connection error in WordPress

What Causes Error Establishing a Database Connection in WordPress?

The ‘Error establishing a database connection’ issue can be caused by incorrect database information in your WordPress settings, corrupt database, or an irresponsive database server.

Database connection error in WordPress

A database is a software which makes it easy to store, organize, and retrieve data into other software.

As a content management system, WordPress uses a database to store all your content and other website data. It then connects to the database each time someone visits your website.

WordPress needs the following information for connecting to the database:

  • Database name
  • Database username
  • Database password
  • Database server

This information is stored in your WordPress configuration file called wp-config.php.

If any of these items are incorrect, WordPress would fail to connect to your database server, and you’ll see the ‘Error establishing a database connection’ error.

It is one of the most common WordPress errors. Apart from incorrect credentials, this error can also appear if the database server is down, or the database files are corrupt.

Let’s take a look at how to fix error establishing database connection issue in WordPress with step by step troubleshooting.

Video Tutorial

Subscribe to WPBeginner

If you’d prefer written instructions, just keep reading.

1. Check Your WordPress Database Credentials

The most common reason for database connection error in WordPress is incorrect database credentials. If you have recently moved your WordPress site to a new host, then this could be the most likely reason.

Your WordPress database credentials are stored in the wp-config.php file. It is the WordPress configuration file that contains important WordPress settings including database information.

If you have not edited wp-config.php file before, then take a look at our guide on how to edit wp-config.php file in WordPress.

You’ll be looking for the following lines in the wp-config.php file.

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );
/** MySQL database username */
define( 'DB_USER', 'username_here' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

You need to make sure that the information for the database name, username, password, and database host is correct.

You can confirm this information from your WordPress hosting account dashboard. Simply log in to your hosting account and click on MySQL databases under the database section.

We’re using Bluehost dashboard in our screenshot, but the process will be similar in other hosting control panels.

Database information

This will take you to the database management page in your hosting dashboad. From here, you can find out your database name and the username.

Database name and username

Below that you will find the database users and links to change the user password.

Changing database user password

Once you have confirmed your database name, username, and password, you can change that information in your wp-config.php file if needed.

After that, try visiting your website again to see if the database connection error has gone.

If you can still see the error, then this means that something else is wrong. Continue reading for more troubleshooting steps.

2. Check Your Database Host Information

If you are confident that your database name, username, and password information is correct, then you may want to make sure that you are using the correct database host information.

Most WordPress hosting companies use localhost as your database host. However, some managed WordPress hosting companies use separate servers to host databases. In that case, your database host information will not be localhost.

You need to contact your WordPress hosting company to confirm your database host information.

3. Repair WordPress Database

If you are getting a different error on the wp-admin, for instance, something like “One or more database tables are unavailable. The database may need to be repaired”, then you need to repair your database.

You can do this by adding the following line in your wp-config.php file. Make sure to add it just before ‘That’s all, stop editing! Happy blogging’ line wp-config.php.

define('WP_ALLOW_REPAIR', true);

Once you have done that, you can see the settings by visiting this page: http://www.yoursite.com/wp-admin/maint/repair.php

Repair WordPress database

Note: the user does not need to be logged in to access the database repair page. Once you are done repairing and optimizing your database, make sure to remove this code from your wp-config.php.

4. Check if Your Database Server is Down

If everything seems to be correct, and WordPress still cannot connect to the database, then your database server (MySQL server) may be down.

This could happen due to heavy traffic on a server. Basically, your host server just cannot handle the load (especially when you are on shared hosting).

Your site will get really slow and for some users it may even output the error. So the best thing you should do is get on the phone or live chat with your hosting provider and ask them if your MySQL server is responsive.

If you have other websites running on the same server, then you can check those sites to confirm that your SQL server is down.

If you do not have any other site on the same hosting account, then simply go to your hosting dashboard and try to access phpMyAdmin and connect the database.

If you can connect, then we need to verify if your database user has sufficient permission. Create a new file called testconnection.php and paste the following code in it:

<?php
$link = mysqli_connect('localhost', 'username', 'password');
if (!$link) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully';
mysqli_close($link);
?>

Make sure to replace the username and password. You can now upload this file to your website and access it via web browser.

If the script connected successfully, then it means that your user has sufficient permission, and there is something else that is wrong.

Go back to your wp-config file to make sure that everything there is correct (re-scan for typos).

Other Solutions That Have Worked for Users

If the above-mentioned troubleshooting tips failed to fix the database connection error on your website, then you may try these additional steps.

Reported by our users, these steps have helped some users resolve the database connection error on their websites.

1. Update WordPress Site URL

Try updating the WordPress site URL using phpMyAdmin. Simply access phpMyAdmin from your hosting account dashboard, and select your WordPress database.

Running SQL in phpMyAdmin

After that click on the SQL menu on the top and enter the following MySQL query.

UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'

Don’t forget to provide your own site URL and change wp_options to your own table name as you may have changed the WordPress table prefix.

2. Rebooting Web Server

Users on dedicated servers, local server, and virtual private servers (VPS) can try rebooting their servers.

This will restart your web and database server which may fix some temporary glitches causing the error.

3. Ask for help

If everything else fails, then you may need to contact your web hosting company. All good WordPress hosting companies will help you troubleshoot the problem, point you in the right direction, or even fix it for you.

You can also hire WordPress developers from Codeable that can help you fix this issue for reasonable rates. The best part is that these developers are highly-vetted by Codeable team, so you know they can be trusted.

We hope this article helped you fix the error establishing a database connection in WordPress. You may also want to see our WordPress troubleshooting guide for tips on resolving WordPress issues on your own.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. See how WPBeginner is funded, why it matters, and how you can support us.

The Ultimate WordPress Toolkit

Get FREE access to our toolkit – a collection of WordPress related products and resources that every professional should have!

Reader Interactions

648 CommentsLeave a Reply

  1. had this happen to me when trying to install word press, didnt realise i hadn’t actually enabled user privileges! thanks for this helpful article

  2. Just had this happen after I backed up my files and had set up a password to access and backup my database before I upgraded.
    Thanks for your site realised that I had accidentally replaced the autogenerated password (as I didn’t know it existed) . So I found it in the config.php file in my backup set and reset it in the admin panel on my host’s site. All now OK.
    Can’t thank you enough for a brilliant article.

  3. I’ve tried them all! Eventually I solved by creating a
    different DB Username in my host cpanel (giving it all the privileges of
    course) and also changing the DB Host to my server IP in the wp-config.php file.

    I’ve got no clue why that would solve the issue but perhaps
    it could be that the DB Name and DB Username cannot have the same name. (You may think: “duh! Of course not!!!”, well, my host’s “DB Creation Wizard” had auto generated the two fields and, believe it or not, it wouldn’t let me change it at the beginning). I had to create a new user
    separately later on to solve the issue.

    Thanks for this great post. x

  4. You’re the best ….
    I didnt know that changing the db password would drop the database connection to wordpress ….
    Solution 2 was brilliant ……. 2 min max.
    Thanks alot!!!

  5. hello…i am getting this error. it just happened out of the blue today! nothing was changed other than some text on a page. i logged out. now i got the error.

    in one of the paragraphs you state: “First thing you should do is to make sure that you are getting the same
    error on both the front-end of the site, and the back-end of the site
    (wp-admin). If the error message is the same on both pages “Error
    establishing a database connection”, then proceed onto the next step.” what is the next step? i get the error on both sides.
    this was confusing to me. sorry. so what is the next step so i can try to figure out how to fix this!
    thanks for your help!

  6. This error happened to one of my membership sites, except when you logged in, the site looked and acted normally.

    After following the usual routes, including changing the database user and accusing the theme of being the culprit, I discovered an extra “?>” at the end of the wp-config.php file. Once I deleted that everything worked.

    I have no idea how that ended up there. Hours of frustration sorted by deleting two characters!!

  7. With this problem I found that it was a database corruption but that it resulted in my not being able to access the WordPress repair tool – however, I could effect a repair by using the mySQL section in my hosts control panel (cPanel) and then the site came straight back up.

  8. just encountered this type of error..and i be able to fixed this through database optimize and repair..i like this post..thumbs up..

  9. I had the Permalinks set to Post Name. I switched it back to Default and the error went away and my pages re-appeared. I then switched back to Post Name because I prefer this setting, and it still worked. Good to go. Only took several hours to figure that crap out. Lol.

  10. Saved my life – changed the database password within the hosting control panel, had no idea I had to update it in wp-config. Hours of stress avoided – thanks!

  11. I had this issue today.
    Server had crashed last night and was attended to fairly quickly when the issue was known.
    All worked for a while but today WordPress couldn’t make a connection to the database.
    The Simple Machines Forum database was working ok and the forum would load.
    What I did was:
    1. Create a new database user
    2. Assigned that user to the WP database with full privileges.
    3. Updated WP_config to use that user

    After that all was good.

    Seems that after a server issue the WordPress user privileges can become corrupt or changed even though the user is shown with full privileges.

    Thanks for this post. It pointed me in the right direction.

  12. Hi! I having constantly this issue, I go to the webpage and it shows this error, but then I refresh some minutes later and the error it’s gone. It stopped happening so I even forgot about it. But today I asked my work partners (4 people) to enter the site at practically the same time to see the new mobile appearance and some got the error and others didn’t (it wasn’t exactly at the same time since I asked to do it in their phones and everyone had different speed) this concerns me a lot. I read you told someone else who also had this issue but it fixed by itself that it was because of his server. Should I call my server and ask what’s going on? Or is there a chance I did something wrong? Almost everyday it’s weird and it just go away. Thanks!

  13. Sorry guys,but for a real beginner your information appears to assume a greater knowledge on how to do stuff than perhaps some of us have.It’s ok to say,check this or that, but when we have no idea how to get there, it is not much help.I know you are saying that we should not be here if the tech. level is not there, but that does not help.One can follow a more step by step procedure but perhaps that is asking too much.Thanks.

    • We understand, and we are sorry that you didn’t find this information easy. Please let us know which part you are having trouble with and we will try to explain it more.

      Admin

  14. Last night my Centos server crashed and when it came back up I had the error.

    What worked for me was to rename the file /var/lib/mysql/mysql.sock, start the mysql service with service mysqld start, shutdown the server with shutdown -h now, then bring the server back up.

    Basically, the crash had locked up MySql so it thought it was running when it really wasn’t.

  15. Thank you very much!

    In my case I fixed it by

    1) deleting the current user that was connected to my database
    2) creating a NEW user with all privileges
    3) adding this user to the database
    4) refreshing my details in config.php (user and password)
    5) refresh my site (F5)

    Furthermore, although I hadn’t changed anything about this, when I reloaded my WP admin page, a Fatal error occured which told me that the Facebook plugin was creating some sort of memory exhaustion. I disabled the plugin by renaming it in wp-content/plugins and got rid of my problem.

    This, by the way, also solved some display issues on my homepage.

    Hope this feedback helps and again, thank you very much for sharing this article!

    Bart

  16. When I went to login to my company’s dev site this morning, I got this message (on the back end and on the front end), but 10 minutes later I refreshed the page and it wasn’t a problem anymore. On the one hand, I’m glad it resolved itself, but on the other hand, I’d really like to know why it happened and how it got fixed so it doesn’t happen again. Any ideas?

  17. I am having a database error that I need help with. I bought 40 WP sites and transferred them from one host to another (GoDaddy). I made the mistake of switching some content on the sites before switching the DNS. I switched all of the domains last night to match the DNS of Godaddy, not I am getting database error problems with all of the sites that I worked on.

    I’m kind of a newbie on the backend side, but I’m thinking that changing the files and then pointing the DNS after this somehow messed everything up, this is the only thing that I could come up with since the sites I didn’t touch still work. Thanks

    • First you should have backedup your old databases using phpMyAdmin and then import them to your new webhost’s database server using phpMyAdmin. You should then change your DNS settings to point to your new web host. After that you need to edit wp-config file on all your sites, change the database name, password, host, settings to match your new databases.

      Admin

      • What do I do to fix it now that it is at this point? All the DNS settings are changed and I keep getting the error messages. Is there a way to go back and install the original files ?

  18. Hi there…
    I’ve been working with a local install for a while now and wanted to change the url of my local install to something else, so I went ahead and changed quite a few times my wp-config database name, my mamp settings of the database in “wp-options”..plus some others I don’t know remember. This resulted in “error establishing database connection”. I troubleshooted for a whole day, (returning back to the same nightmare I got when I first installed mamp and wordpress locally). I changed everything back the way it was to no avail, making me feel soooo frustrated and stupid again…! So, I read this article to the end and where it says “siteurl” solution in the “Solutions that worked for others” section and went back in phpmyadmin to check this…surely enough…in the “wp-options” of the particular database, in the “site url” field, it had the name of my database, (which I had stupidly changed previously without realising its impact), I also checked it against other databases I could access with no problems and the field indeed said, “siteurl” instead of the actual db name!
    I changed it immediately and phewww….got my database back and working and logging in with no problems..!!
    People, if you did something similar, check this first…it surely made me feel stupid…at least I have another troubleshooting trick up my sleeve now…thank you for your input..!

  19. Well, thanks for details. But I think, it is very simple. Don’t take it complicated like you. Just open wp-config.php and change the database username and password. Hope it will be fix.

  20. Hello,
    Thanks for this description.
    I just moved my site from BlueHost to DreamHost.
    When going to my site I get an EMPTY (really empty, white) page. Nothing else.
    However, when I go to wp-admin… “Error establishing a database connection” is displayed.

    I can log in into the MySQL (going to msql.remete.org) and it works.

    All four parameters in wp-config seem to be oké, as well:
    /** The name of the database for WordPress */
    define(‘DB_NAME’, ”);
    /** MySQL database username */
    define(‘DB_USER’, ”);
    /** MySQL database password */
    define(‘DB_PASSWORD’, ”);
    /** MySQL hostname */
    define(‘DB_HOST’, ”);
    Here I had replaced the “localhost” by the “msql.remete.org”, as it should be with DreamHost.

    My site is remete.org.

    I moved already several WP sites … and some worked well, some had the white page at the root, however, this is the first and only one with “Error establishing a database connection” error.

    How may I make the DB connection work?
    How can the root made work, as well (instead of the white page)?

    I would really appreciate your help.

    Thanks a lot,

    Tamas from Budapest

  21. for a multisite deployment, you also need to check the table wp_blogs and make sure the correct URL appears there, otherwise wordpress will say “error-establishing-a-database-connection”

    • DING DING! I had pulled down a copy of production data and was suddenly getting this error with a multisite instance. Updated the “domain” column in wp_blogs and it works again. Thanks for pointing it out!

  22. Thank you for producing this quality post. Your instruction worked perfectly! and saved me lots of hassle :)

  23. Hey man. I just wanted to thank you for this GOOD post. It didn’t work and I didn’t know why.
    I read your blog and followed everything and now it works again.. after 11 HOURS of work.

    This is a sign of appreciation.. If you were here I’d get you a huge beer. Thanks so much for your clear help!

    Alex

  24. Oh my goodness. Typically posts like these usually don’t pan out for me after following directions… but you sir have saved the day here. Thank you!

  25. Thank you so much for this! I definitely thought I had lost my site completely until I followed this. My only hangup was that I had no idea where to find the wp-config.php file without being able to get into wordpress. I eventually found my file manager through my hosting, but it took me a while to figure that part out. Keep the great info coming!

  26. OR….

    *IF* you were messing around in the editor with any of your .php pages/code in the editor and your copy/paste back to the original did not work on this database connection error… the work-around is to then copy/paste back via FTP to the exact folder of the .php file rewriting over the edited one and this will for sure work to get your site to show back up online again.

  27. Hi! Im facing the same problem with the wordpress. I did copy and paste the testconnection.php and it showed “Access Denied”. But when I edited the line – “mysql_connect” to “mysqli_connect” database was connected successfully. How do I implement “mysqli_connect” in the wordpress config file?

  28. I am seeing “a secure data connection could not be established” on android browsers for my site

    , only when reading posts not on homepage.

  29. Hi there,
    I am desperately trying to launch a new install of WordPress with MAMP, both Apache en MySQL give green lights, but when starting up in the browser I get the “Error establishing a database connection” message.
    I am relatively new and most of the options above seem rather advanced, and for websites that have already been working, is there a simple way to tackle this for new installations of WordPress?

    WordPress was supposed to be not too difficult to install….

    Thanks in advance!

    • marcel open the wp-config.php file in your WordPress install folder. And check your database username and password. Usually on fresh install of MAMP database username should be root and password should be left blank.

      Admin

  30. i am a newbie & my site data access via filezilla, Please tell how to test connection as i have not seen any phpmy admin in hosting control panel.

  31. Pardon my seemingly dumb question, but what do I put in for “root” in the MySql test?

    $link = mysql_connect(‘localhost’, ‘root’, ‘Q3dDZE3PiUpQ’);

    Thanks!

    • replace root with your MySQL username (unless your MySQL username is already root then don’t change it) and then your password. Let’s assume your mysql host is localhost, username is jenbarnes and password is Q3dDZE3PiUpQ then you would use it like this

      $link = mysql_connect('localhost', 'jenbarnes', 'Q3dDZE3PiUpQ' );

      Admin

  32. Hey, I can’t launch my site as wp-admin or just visit the site?
    what to do? It’s all my 4 domains there’s been down by this error (below)
    “Error establishing a database connection”
    Please help me!

    – Kasper

  33. Oh! thank you guys! I almost had a heart attack.
    This was the first time I was backing up my data (so that my website doesnt crash or even if it did I could recover it) logged in to PHPadmin panel changed the password caz the original one was auto generated. logged in and backed up. relieved I went back to my website and boom! these big letters: Error Establishing a Database Connection
    man, you can understand I flatlined for a few seconds..

    Anyway thanks alot!!

Leave a Reply to Tamas Cancel reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.