How to Fix Password Reset Key Error in WordPress
Last modified: June 18, 2026
The WordPress error “Could Not Save Password Reset Key To Database” locks you out of your own site right when you need access most. The good news: this error has 4-5 well-known causes, and most can be fixed in under 10 minutes without developer help. Here is how to diagnose and fix it.
* This button will show the rest of the post and open up an offer from a vendor
Why WordPress Can't Save the Password Reset Key
When you request a password reset, WordPress generates a temporary key and tries to write it into the `user_activation_key` field of the `wp_users` table in your database. The error “Could Not Save Password Reset Key To Database” means that write failed. There are a few reasons this can happen:
Full disk quota. Your hosting account has an allocated storage limit, and your WordPress database counts toward it. When that quota is used up, WordPress cannot write anything new to the database, including the password reset key. Signs that your disk is full include error messages in your hosting control panel, failed image uploads, and posts that won’t save.
Database permission issue. If the database user linked to your WordPress site does not have WRITE permission on the users table, the key cannot be saved regardless of available disk space. This can happen after a hosting migration or a change in cPanel settings.
Caching conflict. A caching plugin or server-level object cache can sometimes return stale responses that make it appear the database write failed when the database itself is fine. This is especially common with persistent object caches like Redis or Memcached. These caches can hold onto the output of the password reset function and serve stale results. Clearing them requires either using your hosting panel’s cache flush button, temporarily deactivating the caching plugin, or running wp cache flush via WP-CLI. Clearing all caches is worth trying before pursuing more involved fixes.
Corrupted database table. Rarely, the `wp_users` table itself can become corrupted, preventing any writes. This is less common but can happen after a server crash or a failed update. You can attempt to repair the table directly in phpMyAdmin: open your WordPress database, click the `wp_users` table, then go to the Operations tab and click “Repair table.” If the repair succeeds, try the password reset again.
Fix 1: Free Up Disk Space
If a full disk is the culprit, the goal is to reduce data stored on your server. Before doing anything else, check how much disk space you are actually using. In cPanel, look at the disk usage statistic in the left sidebar, or go to Files > Disk Usage for a breakdown by folder. If you have SSH access, run df -h for an overview of disk usage, or du -sh /home/USERNAME/ to see how much space your account is consuming.
Once you have confirmed the disk is full or nearly full, connect to your site using an FTP client and navigate to wp-content/uploads/. Look for large image files, old exports, or backup archives stored there. Download anything you want to keep, then delete it from the server.
Other effective ways to recover disk space:
- Deactivated plugins: Go to Plugins > Installed Plugins and delete any plugins you are not using. Even deactivated plugins take up server storage.
- Unused themes: Go to Appearance > Themes and delete all themes except your active theme and one backup. Each theme can take up several megabytes.
- Cache files: Open your caching plugin settings and purge all cached files. Caching setups that are never cleared can accumulate gigabytes over time.
- Server-side backup archives: If your backup plugin stores copies on the same server, move those to an off-site location (Dropbox, Google Drive, or Amazon S3) and then delete the local copies. Storing backups on the same server wastes space and creates a security risk if your site is ever compromised.
After freeing up space, try the password reset again. If it works, disk space was the problem. You may also need to consider upgrading to a hosting plan with a larger storage quota if you are consistently running close to your limit.
Fix 2: Reset Your Password Directly via phpMyAdmin
If freeing up disk space does not help, or if the password reset emails simply are not arriving, you can bypass the reset flow entirely and change your password directly in the database. This approach works regardless of disk space or email delivery issues.
Log into your hosting control panel (cPanel, Plesk, or similar) and open phpMyAdmin. Select your WordPress database from the left sidebar, then click on the `wp_users` table. Find the row for your user account and click the Edit button.
Locate the `user_pass` field. In the Function dropdown next to this field, select MD5. Then type your new password into the Value field alongside it. Click Go to save the change.
Important note about MD5: MD5 is an older hashing method, and WordPress now uses a more secure format called phpass for password storage. However, setting an MD5 hash in phpMyAdmin still works because WordPress detects the MD5 format on your next login and automatically upgrades it to the modern phpass format behind the scenes. You do not need to worry about MD5 being insecure in this context: it is only used for the one login needed to get back in. After logging in, go to Users > Your Profile in the WordPress admin and update your password from there. WordPress will then store it using the current secure hash format.
Return to the WordPress login page at yoursite.com/wp-login.php and log in with your new password.
If you want to check or correct database user permissions at the same time, go to cPanel > MySQL Databases > Current Users. Find the database user associated with your WordPress site and confirm it has SELECT, INSERT, UPDATE, and DELETE privileges on the database. If any are missing, add them and try the password reset flow again.
Fix 3: Clear All Caches
When a caching plugin or server-side cache is active, the password reset flow can appear broken even if the database itself is fine. The cache may be serving a stale version of the reset page or intercepting the write before it reaches the database. Work through each layer:
- Object cache: Go to your caching plugin settings (W3 Total Cache, WP Super Cache, LiteSpeed Cache, or similar) and flush the object cache specifically. If you cannot find the option, temporarily deactivate the caching plugin entirely from the Plugins screen.
- Page cache: Purge the page cache using your caching plugin’s toolbar button or the Purge/Empty Cache option in its settings.
- Redis or Memcached: If your host offers Redis as a persistent object cache, flush it from the Redis settings in cPanel, or via SSH:
redis-cli FLUSHALL. For Memcached, restart the service or useecho flush_all | nc localhost 11211. - Browser cache: Clear your own browser cache and cookies, then retry the password reset from scratch. The password reset link arrives by email: if you are clicking a link from a cached browser session, you may be hitting a stale page that no longer corresponds to an active reset request.
After clearing all caches, request a new password reset email (do not reuse the old link, which may have been invalidated when you cleared the cache). If the reset completes successfully, a caching conflict was the cause. Review your caching plugin’s settings and consider excluding the /wp-login.php and /wp-admin/ paths from caching.
Fix 4: Check Database User Permissions
Even when disk space is not the issue, the WordPress database user may lack write permission on the wp_users table. This is a common result of a hosting migration or a manual change in cPanel. Without INSERT and UPDATE privileges, WordPress cannot save the password reset key regardless of what else you try.
To check and fix permissions in cPanel: go to Databases > MySQL Databases and scroll down to the “Add User to Database” section. Select your WordPress database user and your WordPress database from the dropdowns, then click Add User. On the next screen, select “ALL PRIVILEGES” and save.
If you prefer to check permissions in phpMyAdmin: click your WordPress database name in the left sidebar, then click the Privileges tab at the top of the page. Find your WordPress database user in the list and click Edit Privileges. Make sure all of the following are checked: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER.
Not sure which database user your site is using? Open wp-config.php via FTP or cPanel File Manager. The DB_USER constant holds the username, and DB_NAME holds the database name.
After updating permissions, wait 30 seconds for changes to propagate, then try the password reset again.
Fix 5: Reset Password via WP-CLI
WP-CLI is the fastest method available if your hosting plan gives you SSH access. It bypasses the email reset flow entirely and writes directly to the database using WordPress’s own password hashing, so there is no need to touch phpMyAdmin or deal with MD5 at all.
Steps:
- Connect to your server via SSH. Most shared hosts offer a Terminal option in cPanel. You can also use a standalone SSH client such as PuTTY on Windows, or the built-in terminal on Mac or Linux.
- Navigate to your WordPress root directory. On most shared hosts this is:
cd /home/yourusername/public_html/(the exact path varies by host). - Run the following command, replacing YOUR_USERNAME with your WordPress admin username and setting your desired new password:
wp user update YOUR_USERNAME --user_pass="YourNewPassword123!" --allow-root - Log in immediately at
yoursite.com/wp-login.phpwith the new password.
WP-CLI uses WordPress’s native password functions, so the resulting hash is already in the secure phpass format. No follow-up steps are needed after logging in.
If WP-CLI is not installed on your server, check whether your host’s cPanel offers it as a feature, or ask your hosting support team. Many managed WordPress hosts include it by default.
Fix 6: Disable Plugins Temporarily
In rare cases, a security plugin can block the database write for the password reset key as a false positive. Plugins such as Wordfence, iThemes Security (now SolidSecurity), and All In One WP Security include database hardening features that can, if misconfigured, prevent writes to certain tables.
To test whether a plugin is the cause, rename the plugins folder via FTP: connect to your server, go to wp-content/, and rename the plugins folder to plugins-disabled. This deactivates all plugins at once without touching the database. Then try the password reset again.
If the reset succeeds with plugins disabled, a plugin conflict is the cause. To identify which one:
- Via FTP, rename
plugins-disabledback toplugins. - Log into WordPress admin (you can now reset your password since plugins are re-enabled but you have confirmed the underlying issue).
- Go to Plugins and deactivate all plugins.
- Re-enable them one at a time and test the password reset after each one until you find the plugin that breaks it.
Once you have identified the culprit, check its settings for options that restrict database access or harden the wp_users table. Disabling that specific hardening feature is usually enough. If you cannot find the setting, contact the plugin’s support team with a description of the conflict.
Final Word: How to Fix Password Reset Key Error in WordPress
The “Could Not Save Password Reset Key To Database” error sounds alarming but has a small set of causes. Try the fixes in this order: free up disk space, clear all caches, check database permissions, then use phpMyAdmin or WP-CLI to reset the password directly if nothing else works. Most people resolve it with the first or second fix. If you are also having trouble staying logged in after you get back in, check the guide on fixing the WordPress keeps logging out problem. You can also reset your WordPress password without email using phpMyAdmin or your functions.php file.
Website Maintenance – Use Promocode: scanwp
Advanced JetPlugins for Elementor
Semrush 14 days trial
Kinsta – Managed WordPress Hosting
Bluehost Hosting