Resolve phpMyAdmin Configuration Storage Warning and Enable Extended Features

Introduction

This guide explains how to fix “The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated” — a message you’ll often see right after installing phpMyAdmin, along with a long list of disabled features (bookmarks, SQL history, the Designer, tracking, and more).


Implementation

I. Prerequisites

  • phpMyAdmin already installed on a Linux server
  • Access to the MySQL root account
  • SSH or terminal access to edit files

II. Why This Happens

A default phpMyAdmin installation doesn’t include configuration storage — a set of special database tables phpMyAdmin uses internally to support its extended features. Without them, phpMyAdmin has nowhere to store bookmarks, history, tracking data, and similar features, which is exactly what triggers this message.

This is also the key detail a lot of quick fixes get wrong: editing the config file alone doesn’t fix this. The config file only tells phpMyAdmin where to look for these tables — if the tables were never created in the database, pointing to them changes nothing.

III. Create the Configuration Storage Tables

phpMyAdmin ships with a ready-made SQL script for this, typically at:

/usr/share/phpmyadmin/sql/create_tables.sql

Import it:

mysql -u root -p < /usr/share/phpmyadmin/sql/create_tables.sql

This creates a phpmyadmin database along with all the pma__* tables the extended features depend on.

If your installation doesn’t include this file, download the version matching your phpMyAdmin release from the official phpMyAdmin repository.

IV. Create a Dedicated Control User

phpMyAdmin uses a separate “control user” — not your regular login — to access these tables:

CREATE USER 'pma'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost';
FLUSH PRIVILEGES;

V. Update the Configuration File

Open the config file (default location, adjust if yours differs):

vi /etc/phpmyadmin/config.inc.php

Add the control user credentials along with the table mappings:

$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'strong_password_here';

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Note there are two underscores (__) after pma in each table name — a single underscore will cause phpMyAdmin to fail to find the tables even though they exist.

VI. Restart the Web Server

/etc/init.d/apache2 restart

Log back in to phpMyAdmin — the warning should be gone.

VII. Conclusion

The fix isn’t just editing the config file — it’s two steps: import create_tables.sql to actually create the missing tables, then point the config file at them with a dedicated control user. Skipping the table import is the most common reason this “fix” doesn’t work.


Frequently Asked Questions

Why isn’t editing the config file alone enough? It only tells phpMyAdmin where to look — if the tables don’t exist yet, there’s nothing to find.

Can I use my regular MySQL account instead of a separate control user? You can, but a dedicated control user scoped only to the phpmyadmin database is safer and follows least-privilege practice.

What if create_tables.sql doesn’t exist on my system? It’s usually under /usr/share/phpmyadmin/sql/ on Debian/Ubuntu installs. For manual installs, download the matching version from phpMyAdmin’s official GitHub repository.


How to add Proxy pass rule to access PHPMyAdmin without port number in URL -Plesk

How to Install phpMyAdmin on Ubuntu

Talk to our experts.

Looking for the right technology solution for your business? Our team of experts can help you with development, cloud, DevOps, design, and a wide range of other technology needs. Get in touch with our team here.

admin

Our team has expertise across software and web development, WordPress, e-commerce, mobile applications, UI/UX, cloud and infrastructure, DevOps, CI/CD, API integration, security, testing, automation, and technical support. The team also works with AI-based software solutions, LLMs, AI workflows, AI agents, and intelligent application development to help businesses automate processes and build smarter digital solutions. We focus on developing, deploying, maintaining, and optimising secure, scalable, and reliable technology solutions while helping businesses adopt modern technologies and drive digital transformation.

1 thought on “Resolve phpMyAdmin Configuration Storage Warning and Enable Extended Features”

Leave a Reply

Scroll to Top