phpmyadmin配置存储是必需功能,用于保存书签、查询历史、表关系等用户状态;需在config.inc.php中配置controluser/controlpass、pmadb及各配置表名,并在mysql中创建专用数据库与用户并授权。
什么是phpmyadmin配置存储
配置存储(configuration storage)不是可选功能,而是让 phpmyadmin 正常保存书签、sql 查询历史、表关系、pdf 导出结构等用户级状态的底层依赖。没启用时,你每次刷新页面都会丢失最近的查询、关系设置或列排序——它不报错,但行为明显“记不住事”。
config.inc.php里必须改的5个关键项
phpMyAdmin 自带一个 create_tables.sql 脚本,但它只建表,不自动关联到配置。你得手动在 config.inc.php 中声明这些表的位置和权限账户:
-
$cfg['Servers'][$i]['controluser']和$cfg['Servers'][$i]['controlpass']:必须设为一个**专用的、仅用于配置存储的 MySQL 用户**(不能是 root,也不能复用普通应用账号) -
$cfg['Servers'][$i]['pmadb']:指定存放配置表的数据库名,比如'phpmyadmin'(需提前创建) -
$cfg['Servers'][$i]['bookmarktable']、$cfg['Servers'][$i]['relation']、$cfg['Servers'][$i]['table_info']等:明确写出每个配置表的表名,不能留空或靠默认值猜 -
$cfg['Servers'][$i]['column_info']和$cfg['Servers'][$i]['history']也必须显式赋值,否则查询历史和字段注释功能直接失效
MySQL侧建库建表+授权的最小操作集
别直接运行 phpMyAdmin 自带的 sql/create_tables.sql 就完事——它建表但不设权限,且默认用 root@localhost,而你的 controluser 很可能不是 root。正确流程是:
- 先用管理员账号登录 MySQL,执行
CREATE DATABASE IF NOT EXISTS `phpmyadmin` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 再创建专用用户:
CREATE USER 'pma_ctrl'@'localhost' IDENTIFIED BY 'strong_password_here'; - 只授予必要权限:
GRANT SELECT, INSERT, UPDATE, DELETE ON `phpmyadmin`.* TO 'pma_ctrl'@'localhost'; - 然后导入表结构:
mysql -u root -p phpmyadmin - 最后确认
controluser能连上:mysql -u pma_ctrl -p -e "USE phpmyadmin; SHOW TABLES;"——失败就说明权限或 host 不匹配
常见卡点:为什么启用了还是没效果
最常被忽略的是两个隐性条件:
- PHP 的
mysqli或PDO扩展必须启用,且版本兼容(PHP 8.0+ + MySQL 8.0 需确认caching_sha2_password插件是否被支持,否则controluser连不上) -
pmadb数据库里的所有配置表,其ENGINE必须是InnoDB(不是 MyISAM),否则关系视图和外键约束会静默失效 - 如果 phpMyAdmin 是通过 Docker 或共享主机部署,
config.inc.php可能被覆盖或读取顺序错乱——检查实际生效的配置文件路径,别只改了本地副本
配置存储不是“开个开关就跑”,它是一组跨 PHP、MySQL、phpMyAdmin 三端的精确对齐操作。漏掉任意一环,表面看功能都可用,但书签存不住、关系画不出、导出 PDF 没结构——问题总在你最需要它的时候才暴露。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











