WordPress, “You do not have sufficient permissions to access this page”

WordPress upgrades is a task most users do on a frequent basis,and most of the time it works flawlessly. But once in a while something goes wrong and WordPress doesn’t behave the way we expect. The most common complaint I see is the following error being thrown during wp-admin login after a WordPress database upgrade.

“You do not have sufficient permissions to access this page”

This innocuous message however is the source of many a wasted hours. Although there could be many reasons for the above message, the one I most often see cited is the inconsistency between WordPress prefix for the following values:

Table – Column – Value
wp_options – option_name – wp_user_roles
wp_usermeta – meta_key – wp_capabilities
wp_usermeta – meta_key – wp_user_level

So if you have a value like ‘wpress_capabilities’ and the other ‘wp_user_roles’ (notice the different prefixes), the error is thrown. In many cases the value itself is missing from the table after a database upgrade. In a recent case, after a WordPress database upgrade the wp_user_roles option name was missing from the ‘wp_options’ table, which disallowed admin login and displayed the above message. The solution was to add the option name manually to the table with the option value taken from a old database backup. If you do not have a database backup (God forbid) you can use the value from a fresh WordPress installation.

To quickly check if all the above values exist with also the same prefix, you can use the following simple query.

SELECT option_name AS A FROM wp_options WHERE option_name LIKE '%_user_roles'
UNION 
SELECT meta_key AS A FROM wp_usermeta WHERE meta_key LIKE '%_capabilities'
UNION
SELECT meta_key AS A FROM wp_usermeta WHERE meta_key LIKE '%_user_level'

Which will return:

A
wp_user_roles
wp_capabilities
wp_user_level


One thought on “WordPress, “You do not have sufficient permissions to access this page”

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>