phpMyAdmin 默认禁止导出 information_schema,因其在服务端硬编码排除该库及 performance_schema、sys、mysql;即使 root 登录或有完整权限,导出界面也不显示,必须用 mysqldump 或 SELECT 命令逐视图导出元数据快照。

phpMyAdmin 默认禁止导出 information_schema,不是权限或配置问题,而是硬编码限制——它压根不把该库列入可导出范围。
phpMyAdmin 导出界面为什么根本看不到 information_schema
phpMyAdmin 的导出逻辑在服务端 PHP 代码中做过滤:它只允许导出用户显式拥有 SHOW DATABASES 权限且名称不匹配系统库正则的数据库。即使你手动在 SQL 栏执行 USE information_schema 成功,导出页面的数据库下拉菜单和“全选”逻辑仍会跳过它。
-
information_schema、performance_schema、sys、mysql这四个库被写死在排除列表里(源码中类似in_array($db, ['information_schema', ...])) - 这个过滤发生在 PHP 层,和 MySQL 账号是否有 SELECT 权限无关;就算你用 root 登录,也看不到它们出现在导出目标里
- 前端隐藏(
hide_db配置)和后端导出禁用是两套机制:前者只影响左侧菜单显示,后者直接切断导出入口
想导出 information_schema 只能绕过 phpMyAdmin
必须用命令行工具直连 MySQL,且注意权限和语义差异:
- 用
mysqldump --databases information_schema会报错,因为该库是只读虚拟库,mysqldump尝试读取其表结构时会失败(例如TABLES表不可被 LOCK) - 真正可行的是用
SELECT导出具体视图内容,比如:mysql -Nse "SELECT * FROM information_schema.SCHEMATA" > schemata.csv - 如果需要完整元数据快照,得逐个查关键视图:
TABLES、COLUMNS、STATISTICS、ROUTINES,并用-N -s确保输出无表头、无多余空格 - 注意字符集:information_schema 默认用 utf8mb3,导出含 emoji 的库名时可能乱码,加
--default-character-set=utf8mb4
导出后数据不能直接还原,别当成备份用
information_schema 不是真实存储的数据,而是运行时动态生成的元数据快照。导出的 CSV 或 SQL 文件只是某一时刻的状态记录,无法用 mysql 命令导入回原库,更不能用于恢复。
- 试图
CREATE DATABASE information_schema会失败:MySQL 禁止用户创建同名系统库 - 即使强行建库并导入,重启 MySQL 后所有内容会被清空重刷——它的数据永远来自内存和引擎内部状态
- 唯一合理用途是审计比对:比如上线前导出一份,上线后对比
TABLES行数或COLUMNS字段变更
真正容易被忽略的一点:很多人以为“导出不了就是权限不够”,其实恰恰相反——正因为权限足够高(能看到),phpMyAdmin 才刻意禁用导出,防止误操作或敏感信息泄露。要拿到数据,就得接受它不是“备份”,而是“快照查询”。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











