在 phpMyAdmin 中管理多台服务器时,必须先正确配置存储数据库,否则书签、SQL 历史、关系视图等高级功能会失效,基于 cookie 的认证会话也可能无法持续保持;通常需要执行 create_tables.sql 完成建库建表,并为专用用户授权,同时正确设置 pmadb、表前缀以及相关权限。

为什么必须配置存储数据库才能管理多服务器
如果没有配置 pmadb,phpMyAdmin 将无法保存书签、SQL 历史、关系图、列注释等状态数据。在多服务器管理场景下,这些功能不仅会失效,还可能直接报错。更关键的是,像 cookie 这样的认证方式,在多台服务器之间切换时,往往需要依赖存储数据库来维持会话上下文;否则就可能出现跳转异常、登录后服务器列表不显示,或切换服务器失败等问题。
创建 phpmyadmin 存储数据库的正确步骤
最稳妥、最标准的做法是直接执行 sql/create_tables.sql 脚本,手动逐张建表很容易遗漏字段、索引或权限设置,从而导致 phpMyAdmin 存储功能不完整。
- 进入 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 在切换到未启用的服务器后,会静默关闭高级功能,界面往往不会给出明显提示
配置 phpMyAdmin 存储数据库并不是简单地“打开开关”,而是实现多服务器稳定管理与协作的基础条件。无论是表结构、访问权限还是表前缀设置,三者都必须完整到位,任何一项缺失都可能导致功能降级、会话异常或界面显示不正常。
