{"id":1548,"date":"2017-05-29T14:04:34","date_gmt":"2017-05-29T08:34:34","guid":{"rendered":"https:\/\/pheonixsolutions.com\/blog\/?p=1548"},"modified":"2026-09-13T17:11:43","modified_gmt":"2026-09-13T11:41:43","slug":"phpmyadmin-configuration-storage-not-completely-configured-extended-features-deactivated","status":"publish","type":"post","link":"https:\/\/pheonixsolutions.com\/blog\/phpmyadmin-configuration-storage-not-completely-configured-extended-features-deactivated\/","title":{"rendered":"Resolve phpMyAdmin Configuration Storage Warning and Enable Extended Features"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This guide explains how to fix <strong>&#8220;The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated&#8221;<\/strong> \u2014 a message you&#8217;ll often see right after installing phpMyAdmin, along with a long list of disabled features (bookmarks, SQL history, the Designer, tracking, and more).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Implementation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">I. Prerequisites<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>phpMyAdmin already installed on a Linux server<\/li>\n\n\n\n<li>Access to the MySQL root account<\/li>\n\n\n\n<li>SSH or terminal access to edit files<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">II. Why This Happens<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A default phpMyAdmin installation doesn&#8217;t include <strong>configuration storage<\/strong> \u2014 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.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2017\/05\/phpmyadmin_config_storage_architecture-scaled.png\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"331\" src=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2017\/05\/phpmyadmin_config_storage_architecture-1024x331.png\" alt=\"\" class=\"wp-image-11739\" srcset=\"https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2017\/05\/phpmyadmin_config_storage_architecture-1024x331.png 1024w, https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2017\/05\/phpmyadmin_config_storage_architecture-300x97.png 300w, https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2017\/05\/phpmyadmin_config_storage_architecture-768x248.png 768w, https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2017\/05\/phpmyadmin_config_storage_architecture-1536x497.png 1536w, https:\/\/pheonixsolutions.com\/blog\/wp-content\/uploads\/2017\/05\/phpmyadmin_config_storage_architecture-2048x663.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is also the key detail a lot of quick fixes get wrong: <strong>editing the config file alone doesn&#8217;t fix this.<\/strong> The config file only tells phpMyAdmin <em>where<\/em> to look for these tables \u2014 if the tables were never created in the database, pointing to them changes nothing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">III. Create the Configuration Storage Tables<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">phpMyAdmin ships with a ready-made SQL script for this, typically at:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/usr\/share\/phpmyadmin\/sql\/create_tables.sql\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Import it:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mysql -u root -p &lt; \/usr\/share\/phpmyadmin\/sql\/create_tables.sql\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This creates a <code>phpmyadmin<\/code> database along with all the <code>pma__*<\/code> tables the extended features depend on.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">If your installation doesn&#8217;t include this file, download the version matching your phpMyAdmin release from the <a href=\"https:\/\/github.com\/phpmyadmin\/phpmyadmin\/tree\/STABLE\/sql\" target=\"_blank\" rel=\"noopener\">official phpMyAdmin repository<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">IV. Create a Dedicated Control User<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">phpMyAdmin uses a separate &#8220;control user&#8221; \u2014 not your regular login \u2014 to access these tables:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CREATE USER 'pma'@'localhost' IDENTIFIED BY 'strong_password_here';\nGRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost';\nFLUSH PRIVILEGES;\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">V. Update the Configuration File<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open the config file (default location, adjust if yours differs):<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">vi \/etc\/phpmyadmin\/config.inc.php\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add the control user credentials along with the table mappings:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$cfg['Servers'][$i]['controluser'] = 'pma';\n$cfg['Servers'][$i]['controlpass'] = 'strong_password_here';\n\n$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';\n$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';\n$cfg['Servers'][$i]['relation'] = 'pma__relation';\n$cfg['Servers'][$i]['table_info'] = 'pma__table_info';\n$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';\n$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';\n$cfg['Servers'][$i]['column_info'] = 'pma__column_info';\n$cfg['Servers'][$i]['history'] = 'pma__history';\n$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';\n$cfg['Servers'][$i]['tracking'] = 'pma__tracking';\n$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';\n$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';\n$cfg['Servers'][$i]['recent'] = 'pma__recent';\n$cfg['Servers'][$i]['favorite'] = 'pma__favorite';\n$cfg['Servers'][$i]['users'] = 'pma__users';\n$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';\n$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';\n$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';\n$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';\n$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';\n$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';\n<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Note there are <strong>two underscores<\/strong> (<code>__<\/code>) after <code>pma<\/code> in each table name \u2014 a single underscore will cause phpMyAdmin to fail to find the tables even though they exist.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">VI. Restart the Web Server<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/etc\/init.d\/apache2 restart\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Log back in to phpMyAdmin \u2014 the warning should be gone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">VII. Conclusion<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The fix isn&#8217;t just editing the config file \u2014 it&#8217;s two steps: import <code>create_tables.sql<\/code> 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 &#8220;fix&#8221; doesn&#8217;t work.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why isn&#8217;t editing the config file alone enough?<\/strong> It only tells phpMyAdmin where to look \u2014 if the tables don&#8217;t exist yet, there&#8217;s nothing to find.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Can I use my regular MySQL account instead of a separate control user?<\/strong> You can, but a dedicated control user scoped only to the <code>phpmyadmin<\/code> database is safer and follows least-privilege practice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What if create_tables.sql doesn&#8217;t exist on my system?<\/strong> It&#8217;s usually under <code>\/usr\/share\/phpmyadmin\/sql\/<\/code> on Debian\/Ubuntu installs. For manual installs, download the matching version from phpMyAdmin&#8217;s official GitHub repository.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Related Articles<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/how-to-add-proxy-pass-rule-to-access-phpmyadmin-without-port-number-in-url-plesk\/\" target=\"_blank\" rel=\"noreferrer noopener\">How to add Proxy pass rule to access PHPMyAdmin without port number in URL -Plesk<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/install-phpmyadmin-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">How to Install phpMyAdmin on Ubuntu<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Talk to our experts.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">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 <a href=\"https:\/\/pheonixsolutions.com\/contact\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This guide explains how to fix &#8220;The phpMyAdmin configuration storage is not completely configured, some extended features have been [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1022],"tags":[261,339],"class_list":["post-1548","post","type-post","status-publish","format-standard","hentry","category-web-architecture","tag-linux","tag-phpmyadmin","psol-cat-web-architecture"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/phn2x7-oY","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=1548"}],"version-history":[{"count":1,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1548\/revisions"}],"predecessor-version":[{"id":11740,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1548\/revisions\/11740"}],"wp:attachment":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=1548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=1548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=1548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}