在macos上做数据库迁移,核心是选对工具、装得稳、连得上、迁得准。dbeaver免费开源,支持80+数据库,拖拽安装后mysql/postgresql开箱即用,oracle/sql server需手动添加jdbc包;navicat界面直观但需授权,连接mysql 8.0+时可能需重置密码为mysql_native_password;sqlark专注跨厂商迁移,解压即用,提供可视化校验;mysqldump命令行适用于轻量mysql内部迁移,需正确配置path环境变量。
在 macos 上做数据库迁移,核心是选对工具、装得稳、连得上、迁得准。不需要堆砌功能,关键是适配你的源库和目标库类型,同时避开权限、加密方式、字符集这些常见坑。
推荐几款主流迁移工具及安装方式
根据当前(2026年)macOS生态的稳定性和兼容性,以下工具实测可用:
- DBeaver:免费开源,支持 MySQL、PostgreSQL、Oracle、SQL Server、SQLite 等 80+ 数据库,适合多源混合迁移。官网下载 .dmg 文件后拖入“应用程序”即可;首次启动会自动检测 JDBC 驱动,MySQL 和 PostgreSQL 通常开箱即用,Oracle/SQL Server 需手动添加对应 JDBC jar 包。
- Navicat for MySQL:商业软件(有试用期),界面直观,内置迁移向导。从官网下载 macOS 版本,安装后需在系统设置→隐私与安全性中允许运行。连接时注意:若 MySQL 是 8.0+ 且未启用 legacy password,Navicat 可能报错,此时需重置 root 密码为 mysql_native_password 插件方式。
- SQLark:国产专业迁移工具,对 Oracle→达梦、Oracle→MySQL、MySQL→PostgreSQL 等跨厂商迁移支持成熟,提供可视化校验和失败重试。官网下载后解压即用,无需安装,启动后按向导配置源库和目标库连接参数即可开始任务。
-
mysqldump + mysql 命令行:适用于纯 MySQL 内部迁移或轻量级导出导入。确保已配置 PATH(如
export PATH="/usr/local/mysql/bin:$PATH"到~/.zshrc),再用mysqldump -u root -p --databases db1 > backup.sql导出,mysql -u root -p 导入。
关键配置项避坑指南
迁移失败多数不是工具问题,而是底层配置没对齐:
- MySQL 8.0+ 默认使用
caching_sha2_password插件,但 Navicat、旧版 Python 驱动、部分迁移工具不兼容。解决方法:登录 MySQL 后执行ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; - 字符集务必统一。导出时加
--default-character-set=utf8mb4,导入前在目标库执行SET NAMES utf8mb4;,建库时指定CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; - 远程迁移需确认目标库是否允许外部连接:
SELECT host FROM mysql.user WHERE user='root';若只有localhost,需执行CREATE USER 'root'@'%' IDENTIFIED BY 'pwd'; GRANT ALL ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;,并检查防火墙是否放行 3306 端口。 - 大表迁移建议关闭唯一性检查和外键约束:
SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0;,迁移完成后再开启。
简单迁移流程示例(MySQL → MySQL)
以 DBeaver 为例,走通一次本地迁移:
- 打开 DBeaver → 左侧“数据库”→“新建连接”→ 选择 MySQL → 填写 localhost / 3306 / root / 密码 → 测试成功后保存
- 右键源库 → “工具”→“导出数据”→ 格式选 SQL → 勾选“导出结构和数据”→ 输出路径选本地文件
- 右键目标库(可新建)→ “工具”→“导入数据”→ 选择刚导出的 SQL 文件 → 执行
- 导入完成后,右键目标库 → “刷新” → 查看表和数据是否完整;如有报错,查看日志中具体哪条语句失败,常为时间戳默认值、自增起始值等兼容性细节
不复杂但容易忽略。装完工具只是起点,真正省时间的是提前对齐字符集、密码插件和权限模型。











