phpMyAdmin不支持跨数据库批量导出,仅能导出当前选中单库;批量导出须用mysqldump命令行配合脚本,按库名列表循环执行,并避免直接合并多文件以防导入失败。

phpMyAdmin 本身不支持跨数据库批量导出
直接在 phpMyAdmin 界面点击「导出」时,Export 页面默认只作用于当前选中的单个数据库。即使你勾选了多个数据库(比如通过左侧导航栏多选),Export 按钮仍会失效或仅导出当前高亮的那个——这是界面逻辑限制,不是权限或配置问题。
真正可行的批量导出,必须绕过 Web 界面,用命令行工具 mysqldump 配合 shell 脚本完成。phpMyAdmin 只能帮你确认库名、表结构或临时导出单个库做验证。
用 mysqldump 批量导出指定数据库列表
核心思路:把要导出的数据库名写进一个文本文件(如 dbs.txt),再用 shell 循环调用 mysqldump。注意确保运行环境已安装 MySQL 客户端工具且有对应账号权限。
示例操作步骤:
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。
立即学习“PHP免费学习笔记(深入)”;
- 创建
dbs.txt,每行一个数据库名(不含空格和特殊字符):app_production<br>blog_staging<br>crm_backup
- 执行导出脚本(Linux/macOS):
while read db; do<br> mysqldump -u root -p'your_password' --databases "$db" > "${db}_$(date +%Y%m%d).sql"<br>done < dbs.txt -
--databases参数必须加,否则mysqldump会把参数当作表名处理;不加会导致导出为空或报错Unknown database - 密码写在命令行里有安全风险,生产环境建议改用
~/.my.cnf配置文件存放凭证
导出时容易忽略的三个关键点
批量导出看似简单,但以下三点常导致结果异常或恢复失败:
-
mysqldump默认不包含CREATE DATABASE语句,除非显式使用--databases(注意是复数)或--add-drop-database,否则导入时需手动建库 - 不同 MySQL 版本对
--skip-triggers或--routines的默认行为不一致,如果库含存储过程或触发器,务必显式声明是否导出:--routines开启,--skip-triggers关闭(默认开启) - 大库导出时建议加
--single-transaction(InnoDB 表适用),避免锁表;但该参数对 MyISAM 无效,且不能和--lock-all-tables共存
phpMyAdmin 导出单库后合并 SQL 文件不可靠
有人尝试先用 phpMyAdmin 分别导出多个 .sql 文件,再用 cat a.sql b.sql > all.sql 合并——这通常会导致导入失败。原因包括:
- 每个导出文件开头都有
CREATE DATABASE ...和USE ...,合并后可能重复建库或切换错库 - 不同导出时间点的
SET SQL_MODE或字符集声明可能冲突 - 没有统一的事务边界,恢复时无法保证原子性
真要合并,必须人工删掉除第一个文件外的所有 CREATE DATABASE 和 USE 行,并确认 DEFAULT CHARSET 一致。不如直接用 mysqldump --databases db1 db2 db3 一行搞定。


















