核心准备工作
-
环境要求
- 服务器需安装对应数据库(如 MySQL、PostgreSQL、MongoDB)
- 拥有数据库管理员权限(或具备
CREATE
、INSERT
权限的账户) - 待导入的 SQL 文件(如
backup.sql
)需上传至服务器
-
安全提示
- 备份数据:执行前务必备份现有数据库(防止误覆盖)
mysqldump -u root -p 原数据库名 > backup_$(date +%F).sql
- 文件权限:确保 SQL 文件权限为
644
(避免未授权访问)
- 备份数据:执行前务必备份现有数据库(防止误覆盖)
主流数据库导入命令
MySQL / MariaDB
# 创建新数据库(可选) CREATE DATABASE 数据库名; USE 数据库名; # 退出 MySQL 后执行导入(Linux终端) mysql -u 用户名 -p 数据库名 < 文件路径/backup.sql
参数说明:
-u
后接用户名(如root
)-p
会提示输入密码<
表示从文件导入数据
PostgreSQL
# 切换到 postgres 用户 sudo -u postgres psql # 创建数据库 CREATE DATABASE 数据库名; # 退出后导入 psql -U 用户名 -d 数据库名 -f 文件路径/backup.sql
关键参数:
-d
指定目标数据库-f
指定 SQL 文件路径
MongoDB
mongorestore --uri="mongodb://用户名:密码@localhost:27017" --db 数据库名 备份目录/
注意:
- 需提前用
mongodump
生成 BSON 格式备份 --uri
支持远程连接(替换localhost
为 IP)
SQLite
sqlite3 数据库名.db < 文件路径/backup.sql
常见问题解决
-
权限错误
ERROR 1045 (28000): Access denied
方案:检查用户权限,或添加
--host=localhost
指定本地连接 -
文件过大导入超时
方案:修改配置(如 MySQL 的max_allowed_packet
)或分拆 SQL 文件 -
字符集乱码
方案:导入时声明编码(如 MySQL 加--default-character-set=utf8mb4
) -
部分导入失败
方案:使用--force
参数跳过错误(MySQL),事后检查日志
最佳实践建议
- 测试环境验证:首次导入前在测试环境演练
- 进度监控:大型文件用
pv
工具观察进度pv backup.sql | mysql -u root -p 数据库名
- 自动化脚本:将导入命令写入 Shell 脚本(搭配
cron
定时任务)
安全警告:
- 禁止将密码明文写入命令(用
-p
交互输入或使用配置文件)- 生产环境操作前必须备份
- 敏感数据文件及时删除(
rm -f backup.sql
)
命令行导入数据库是运维必备技能,掌握后能高效处理数据迁移、恢复等任务,操作核心在于:
- 明确数据库类型及版本
- 严格遵循权限管理规范
- 始终遵循 备份 → 验证 → 执行 流程
引用说明:本文操作基于 MySQL 8.0、PostgreSQL 14、MongoDB 6.0 官方文档验证,参考来源:
- MySQL :: MySQL 8.0 Reference Manual
- PostgreSQL: Documentation
- MongoDB Documentation
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9268.html