phpMyAdmin查询历史默认关闭,需手动启用:确认使用mysqli或PDO扩展,创建phpmyadmin数据库及pma__history表,配置config.inc.php中$cfg['QueryHistoryDB']=true及history路径,赋予对应用户库表权限,并重启Web服务。

phpMyAdmin 查询历史默认不保存,必须手动启用
phpMyAdmin 的查询历史(Query History)默认是关闭的,即使你执行过大量 SQL,刷新页面后也看不到之前的操作记录。这不是 Bug,而是出于安全和性能考虑的默认设计。要让它工作,核心是配置 $cfg['QueryHistoryDB'] 并确保对应数据库和表存在。
启用前先确认 phpMyAdmin 是否支持 MySQLi 或 PDO
查询历史依赖 PHP 的 MySQL 扩展写入专用表,仅在使用 mysqli 或 PDO 连接方式时生效;如果 phpMyAdmin 当前用的是已废弃的 mysql 扩展(PHP 7.0+ 已移除),会静默失败且无提示。
- 检查
config.inc.php中是否包含$cfg['Servers'][$i]['extension'] = 'mysqli';(推荐)或'pdo' - 运行
php -m | grep -E 'mysqli|pdo_mysql'确认 PHP 模块已启用 - 若看到
mysql(无 i),说明配置或 PHP 版本不匹配,必须切换
创建 history 数据库和 pma__history 表
phpMyAdmin 不会自动建库建表,必须手动初始化。它期望一个名为 phpmyadmin 的数据库(名称可改,但需同步更新配置),内含 pma__history 表。直接导入官方 SQL 文件最稳妥:
mysql -u root -p < /usr/share/phpmyadmin/sql/create_tables.sql
如果你的 phpMyAdmin 安装路径不同,请先定位:find / -name "create_tables.sql" 2>/dev/null。导入后检查表结构是否含 username、db、table、sqlquery、timevalue 字段——缺任一字段都会导致历史记录写入失败。
立即学习“PHP免费学习笔记(深入)”;
修改 config.inc.php 启用并绑定 history 表
编辑 /etc/phpmyadmin/config.inc.php(或你的部署路径下的主配置文件),在 $cfg['Servers'][$i] 区块内添加以下三行($i 通常为 1):
$cfg['Servers'][$i]['history'] = 'phpmyadmin/pma__history'; $cfg['Servers'][$i]['tracking'] = 'phpmyadmin/pma__tracking'; $cfg['QueryHistoryDB'] = true;
注意点:
-
'phpmyadmin/pma__history'是「数据库名/表名」格式,不是完整 SQL 路径 - 如果把 history 表放在其他库(比如
my_pma),这里必须同步改成'my_pma/pma__history' -
$cfg['QueryHistoryDB'] = true必须为布尔值true,写成'true'(字符串)或1都无效 - 改完务必重启 Web 服务:
sudo systemctl restart apache2(或httpd)
复杂点在于:表权限容易被忽略。phpMyAdmin 连接 MySQL 的用户(通常是 pma 或 root)必须对 phpmyadmin 库有 SELECT, INSERT, UPDATE, DELETE 权限,否则日志写入静默失败,界面也不报错。



















