必须配置存储数据库才能管理多服务器,否则书签、sql历史等功能失效,且cookie认证会话无法维持;需执行create_tables.sql建库建表、授权用户并正确配置pmadb、表前缀及权限。
为什么必须配置存储数据库才能管理多服务器
不配 pmadb,phpmyadmin 无法保存书签、sql 历史、关系图、列注释等状态信息,多服务器环境下这些功能会失效或报错。更关键的是:某些认证方式(如 cookie)在多服务器切换时依赖存储数据库维持会话上下文,否则可能跳转失败或登录后看不到服务器列表。
创建 phpmyadmin 存储数据库的正确步骤
直接执行 sql/create_tables.sql 脚本是唯一可靠方式,手动建表极易遗漏字段或权限问题。
- 进入 phpMyAdmin 源码目录,找到
sql/create_tables.sql文件(路径通常为/usr/share/phpmyadmin/sql/create_tables.sql或/var/www/phpmyadmin/sql/create_tables.sql) - 用 root 或高权限账号登录 MySQL/MariaDB:
mysql -u root -p - 执行:
CREATE DATABASE IF NOT EXISTS phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 再执行:
USE phpmyadmin; SOURCE /path/to/sql/create_tables.sql;(注意替换真实路径) - 授权给 phpMyAdmin 使用的连接用户(不是 root):
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pmauser'@'localhost';(pmauser应与你在$cfg['Servers'][$i]['user']中配置的一致)
config.inc.php 中启用存储的三个关键点
只取消注释 $cfg['Servers'][$i]['pmadb'] 不够,必须同步设置关联表名前缀和权限用户。
- 确保每个服务器配置块中都显式指定
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';(不能只写在全局或第一个服务器里) - 添加表前缀避免多服务器冲突:
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';,同理设置'relation', 'table_info', 'column_info'等(官方脚本建的表默认带pma__前缀) - 如果使用
auth_type = 'cookie',必须保证该服务器连接用户(如$cfg['Servers'][$i]['user'])拥有对phpmyadmin数据库的对应权限,否则登录后会提示“存储功能不可用”
容易被忽略的兼容性陷阱
MySQL 9.6.0+ 和 MariaDB 11.x 对存储表结构做了微调,旧版 phpMyAdmin 可能读取失败。
- 检查
phpmyadmin数据库中pma__tracking表是否存在;若不存在,说明脚本未完整执行或版本不匹配 - 若用 Docker 部署且 PMA_HOSTS 多个地址,
pmadb必须在所有目标服务器上存在并结构一致,不能只建在主库 - 当配置了多个服务器但只给其中一部分启用了
pmadb,phpMyAdmin 会在切换到未启用的服务器时静默禁用高级功能,界面无提示
配置存储不是“开开关”,而是让多服务器环境真正可协作的前提——表结构、权限、前缀三者缺一不可,漏掉任意一个都会导致功能降级或界面异常。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











