phpmyadmin 的 userprefs 表(pma__userprefs)需手动启用:须先配置 $cfg['servers'][$i]['pmadb'] 和 controluser,再执行 create_tables.sql 创建表,并在 config.inc.php 中显式设置 $cfg['servers'][$i]['userconfig'] = 'pma__userprefs',且 controluser 需具备该表的 insert/update 权限。

phpMyAdmin 的 UserPrefs 表不是默认启用的
直接查 UserPrefs 表会失败,因为 phpMyAdmin 默认不创建它,也不自动启用用户偏好持久化。这个表属于「配置存储(ConfigurationStorage)」体系的一部分,但和 pma__bookmark、pma__relation 等表不同,UserPrefs 是较新版本(5.2+)才明确分离出的专用表,用于存 UI 主题、字体大小、导航栏折叠状态等前端偏好,而非数据库级元数据。
必须先启用配置存储并确认表结构存在
即使你已配置了 $cfg['Servers'][$i]['pmadb'] 和 controluser,UserPrefs 表也不会被 setup 脚本自动创建——它需要手动执行 SQL 或升级到带该表定义的 phpMyAdmin 版本(≥5.2.1)。验证方式很简单:
- 登录 phpMyAdmin,打开你指定的
pmadb数据库(如phpmyadmin) - 检查是否存在名为
pma__userconfig的表(旧名)或pma__userprefs(5.2.1+ 推荐名) - 若只有
pma__bookmark等表,说明配置存储未完整部署
补全表结构可运行官方提供的 SQL(路径通常为 sql/create_tables.sql),重点确认其中包含类似这段定义:
CREATE TABLE `pma__userprefs` ( `username` varchar(64) NOT NULL, `timevalue` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `config_data` text NOT NULL, PRIMARY KEY (`username`) ) ENGINE=InnoDB COMMENT='User preferences storage';
配置项必须显式指向 UserPrefs 表名
仅靠 pmadb 和 controluser 不足以激活 UI 偏好存储。你得在 config.inc.php 中明确定义表名,否则 phpMyAdmin 会退回到 session 级临时存储:
-
$cfg['Servers'][$i]['userconfig'] = 'pma__userprefs';(推荐,对应新表名) - 若仍用旧表名,写成
'pma__userconfig',但需确保字段结构兼容(config_data必须是 TEXT,且含username主键) - 漏掉这行,或拼错表名(如写成
userprefs缺少前缀pma__),UI 设置就只在当前浏览器 session 生效,关掉标签页即丢失
注意:该配置项不支持通配符或数组,只能填一个字符串值;多服务器环境下,每个 $cfg['Servers'][$i] 可独立设置,但通常共用同一张表。
用户首次保存偏好时会触发 INSERT,后续为 UPDATE
phpMyAdmin 不预置用户记录,而是按需写入:username 字段值来自当前登录的 MySQL 用户名(不是 phpMyAdmin 的 HTTP 认证用户),所以如果你用 root 登录 MySQL,记录里就是 'root';如果用 app_user,则存 'app_user'。
- 偏好数据以 JSON 字符串存入
config_data字段,内容类似:{"theme":"metro","fontsize":"13px","navigation_tree_display_item_filter":true} - 修改主题、切换深色模式、调整 SQL 窗口高度等操作,都会触发该字段的更新
- 如果
controluser没有对pma__userprefs的INSERT/UPDATE权限,操作看似成功,但刷新后还原——此时查 MySQL 错误日志会看到类似Access denied for user 'pma'@'localhost' to table 'pma__userprefs'
真正容易被忽略的是:这个机制完全依赖 MySQL 用户名做键。如果你用空密码的 root 登录,又用带密码的 root 登录另一实例,它们在 UserPrefs 表里是两条独立记录,UI 设置不会同步。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











