phpMyAdmin 不支持多数据库批量导出,必须用 mysqldump 命令行实现;可一次性导出多个库或循环生成独立文件,并需添加 --single-transaction、--routines、--triggers 等关键参数确保完整还原。
phpMyAdmin 没有原生“多数据库批量导出”功能
直接点说:phpmyadmin 的图形界面里,export 页面只允许你一次选一个数据库(或其中的若干张表),不支持勾选多个数据库同时导出为独立文件。这是它的设计限制,不是你操作错了。
用服务器命令行 mysqldump 替代最可靠
真正批量导出多个指定数据库,必须绕过 phpMyAdmin,改用终端执行 mysqldump。它支持一次性指定多个库名,还能用循环生成独立 SQL 文件。
- 先确认你有服务器 SSH 权限和 MySQL 命令行访问权限(
mysqldump通常随 MySQL 客户端安装) - 基本语法:
mysqldump -u [user] -p[password] --databases db1 db2 db3 > all_dbs.sql(注意--databases参数带两个短横,且库名之间空格分隔) - 若要每个库单独一个文件,用 shell 循环:
for db in db1 db2 db3; do mysqldump -u root -p'pass' "$db" > "${db}_$(date +%F).sql"; done - 密码写在命令里有安全风险,建议省略
-p后的密码,执行时再手动输入;或使用~/.my.cnf配置文件存凭证(注意设chmod 600 ~/.my.cnf)
导出时容易忽略的三个关键参数
光导出结构和数据还不够,缺了这几个参数,恢复时可能报错或丢失特性。
-
--single-transaction:对 InnoDB 表加一致性快照,避免导出过程中被写入干扰(但对 MyISAM 无效) -
--routines:否则存储过程、函数不会被导出 -
--triggers:否则触发器不会被导出 - 如果目标环境 MySQL 版本较低,加
--compatible=mysql40可禁用高版本语法(如分区定义)
从 phpMyAdmin 导出后想合并?别这么做
有人试图分别进每个库点 Export → 下载多个 SQL 文件 → 再手动拼在一起。这会出问题:
- 每个文件开头都有
CREATE DATABASE和USE语句,合并后执行会失败(库已存在) - 字符集声明(
DEFAULT CHARSET=utf8mb4)可能重复或冲突 - 没有事务包裹,跨库恢复时无法保证原子性
- 不如直接用
mysqldump --databases一条命令干净
真正麻烦的从来不是“怎么导”,而是导出后是否能无损还原——参数漏一个,mysqldump 就可能悄悄跳过视图或事件。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











