在服务器上导出 MySQL 数据库,最常用且推荐的方法是使用命令行工具 mysqldump,以下是详细的操作步骤和常见场景说明:
基本导出命令(推荐)
这是最标准的导出方式,会生成包含建表语句和插入数据的 .sql 文件。
mysqldump -u 用户名 -p 数据库名 > 导出文件名.sql
示例:
假设用户名为 root,数据库名为 mydb,你想导出到当前目录下的 backup.sql:
mysqldump -u root -p mydb > backup.sql
执行后,系统会提示你输入密码,输入密码后(输入时不会显示字符),导出即开始。
常见高级用法
✅ 导出所有数据库
mysqldump -u root -p --all-databases > all_databases.sql
✅ 只导出表结构,不导出数据
mysqldump -u root -p --no-data mydb > structure_only.sql
✅ 只导出数据,不导出表结构
mysqldump -u root -p --no-create-info mydb > data_only.sql
✅ 导出指定表
mysqldump -u root -p mydb table1 table2 > tables_backup.sql
✅ 压缩导出(节省空间)
如果数据库较大,建议直接压缩导出:
mysqldump -u root -p mydb | gzip > backup.sql.gz
解压恢复时:
gunzip < backup.sql.gz | mysql -u root -p mydb
如何恢复(导入)数据库
将 .sql 文件导入到 MySQL 中:
mysql -u 用户名 -p 数据库名 < 导入文件名.sql
示例:
mysql -u root -p mydb < backup.sql
⚠️ 注意:导入前请确保目标数据库已存在,如果数据库不存在,需先创建:
CREATE DATABASE mydb;
常见问题与注意事项
| 问题 | 解决方案 |
|---|---|
| 权限不足 | 确保用户有 SELECT, LOCK TABLES, SHOW VIEW 等权限。root 或具有 ALL PRIVILEGES 的用户可以正常导出。 |
| 中文乱码 | 在导出时指定字符集:mysqldump -u root -p --default-character-set=utf8mb4 mydb > backup.sql |
| 导出速度慢 | 大数据库导出耗时较长,可加 --single-transaction 参数(适用于 InnoDB 引擎),减少锁表时间:mysqldump -u root -p --single-transaction mydb > backup.sql |
| 找不到 mysqldump 命令 | 确保 MySQL 的
目录已加入系统环境变量,或使用绝对路径:/usr/bin/mysqldump -u root -p mydb > backup.sql |
图形化工具替代方案(可选)
如果你更习惯使用图形界面,可以通过以下方式连接服务器后导出:
- Navicat / DBeaver / DataGrip:连接远程 MySQL 服务器 → 右键数据库 → “转储 SQL 文件” → “结构和数据”。
- phpMyAdmin(如果服务器安装了):选择数据库 → “导出” → 选择“自定义”或“快速” → 下载
.sql文件。
✅ 最佳实践建议:
- 定期备份,并保留多个历史版本。
- 导出文件建议加密或存储在安全位置。
- 大数据库导出时,使用
--single-transaction避免影响线上服务。
如有具体错误信息或特殊需求,欢迎提供更多信息,我可以为你进一步解答!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/486385.html



