MySQL 8.0 中使用 mysqldump
导出的数据在导入时可能出现无效的情况,以下是可能的原因和解决方案:
认证方式不匹配
caching_sha2_password
认证插件字符集问题
SQL模式差异
权限问题
存储引擎差异
# 创建使用旧认证方式的用户
CREATE USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
# 或修改现有用户的认证方式
ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
# 导出时指定字符集
mysqldump -u username -p --default-character-set=utf8mb4 database > dump.sql
# 导入时指定字符集
mysql -u username -p --default-character-set=utf8mb4 database < dump.sql
-- 查看当前SQL模式
SELECT @@GLOBAL.sql_mode, @@SESSION.sql_mode;
-- 临时修改SQL模式(导入时)
SET GLOBAL sql_mode='modes_you_need';
-- 授予导入用户足够权限
GRANT ALL PRIVILEGES ON database.* TO 'username'@'host';
FLUSH PRIVILEGES;
--hex-blob
选项处理二进制数据--no-create-info
选项只导入数据(如果表结构已存在)--skip-add-drop-table
避免删除现有表# 导出
mysqldump -u root -p --default-character-set=utf8mb4 --routines --triggers --single-transaction --hex-blob database > backup.sql
# 导入
mysql -u root -p --default-character-set=utf8mb4 database < backup.sql
如果问题仍然存在,请检查MySQL错误日志获取更详细的错误信息。