数据导出
数据导出用 mysqldump 命令: MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump - A Database Backup Program
1 导出数据结构 (数据库, 表, 数据):
mysqldump -u 用户名 -p 密码 数据库名 > 数据库名. sql
#/usr/local/MySQL/bin/ mysqldump -uroot -p abc> abc.sql
2 只导出数据结构, 不导出数据
mysqldump -u 用户名 -p 密码 -no-data 数据库名 > schema.sql
3 只导出表结构
mysqldump -u 用户名 -p 密码 -d 数据库名 > 数据库名. sql
#/usr/local/MySQL/bin/ mysqldump -uroot -p -d abc> abc.sql
4 导出所有数据库
添加 -all-databases 选项
mysqldump -u 用户名 -p 密码 -lock-all-tables -all-databases> all.sql
5 分别导出数据库
这个脚本来自于 Stack Overflow, 将网站数据库分别导出到各自的文件.
优点: 不影响 MySQL 本身的信息, 不会改动原有数据库的用户名和密码
缺点: 导入之后需要手动建立用户名并赋予权限, 需重新修改网站配置文件
- #!/bin/bash
- USER="用户名"
- PASSWORD="密码"
- databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "|" | grep -v Database`
- for db in $databases; do
- if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
- echo "Dumping database: $db"
- mysqldump -u $USER -p$PASSWORD -databases $db> `date +%Y%m%d`.$db.sql
- # gzip $OUTPUT/`date +%Y%m%d`.$db.sql
- fi
- done
数据导入
1 数据导入是导出的逆操作, 所以变成左箭头符号
MySQL -u 用户名 -p 密码 数据库名 < 数据库名. sql
#MySQL -uabc_f -p abc < abc.sql
2 连接进入数据库, 打到相应数据库, 导入 sql 文件
MySQL>source /home/abc/abc.sql;
参考资料
MySQL - How to dump a MySQL database and export schema only, no data? | TablePlus
Linux 命令行下导出导入. sql 文件 - Delete_V 的专栏 - CSDN 博客
MySQL 导出所有数据库命令和脚本 | 古博
来源: http://www.mzh.ren/mysql-data-exporting-and-importing.html