当使用 mysqldump
导出的数据库文件无法通过命令行导入时,可能有多种原因。以下是最常见的几种情况及解决方案:
问题:MySQL 8.0默认使用新的认证插件,可能导致旧版客户端工具连接失败。
解决方案:
# 方法1:使用MySQL 8.0客户端工具
mysql -u username -p --default-auth=mysql_native_password database_name < backup.sql
# 方法2:修改用户认证方式(需管理员权限)
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
正确导入命令:
mysql -u username -p database_name < backup.sql
常见错误:
- 忘记指定数据库名
- 使用错误的重定向符号(应该是<
而不是>
)
解决方案:
mysql -u username -p database_name --default-character-set=utf8mb4 < backup.sql
确保: - 使用绝对路径或正确相对路径 - 当前用户有文件读取权限
解决方案:
# 先创建数据库
mysql -u root -p -e "CREATE DATABASE database_name;"
# 再导入数据
mysql -u username -p database_name < backup.sql
对于大型SQL文件:
# 使用pv监控进度(需安装pv工具)
pv backup.sql | mysql -u username -p database_name
# 或增加连接超时设置
mysql -u username -p --max_allowed_packet=512M --net_buffer_length=16K database_name < backup.sql
检查导出文件完整性:
head -n 20 backup.sql # 检查文件头部
tail -n 20 backup.sql # 检查文件尾部
尝试交互式导入:
mysql -u username -p
mysql> USE database_name;
mysql> SOURCE /path/to/backup.sql;
查看详细错误信息:
mysql -u username -p database_name < backup.sql 2> import_error.log
验证导出文件是否加密或压缩:
bash
zcat backup.sql.gz | mysql -u username -p database_name
如果您能提供具体的错误信息或命令示例,我可以给出更精确的解决方案。