ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从Navicat到DBeaver:数据库管理工具迁移实战指南

从Navicat到DBeaver:数据库管理工具迁移实战指南 先说一句掏心窝的话Navicat 确实是好东西我从 2016 年开始用从 11 版本一路用到 17日常连 MySQL、SQL Server、SQLite做数据比对、导数据、看 ER 图顺手得很。但这两年我越想越别扭——一是授权模式一直在变网上搜“navicat 永久许可密钥”“navicat premium 17 注册码”的人越来越多说明大家对这个订阅价格都挺纠结二是我自己电脑上还留过破解版安装包后来越想越后怕一个天天握着我生产环境账号密码的工具如果来历不明风险实在兜不住。后来我把目光放到 DBeaver 上前前后后用了小半年从“嫌弃它丑”到“彻底回不去”中间踩了不少坑。所以这篇教程不打算只列几个按钮而是把我从 Navicat 迁到 DBeaver 的完整过程、操作对照、踩坑记录都写出来给同样想换工具的朋友一条能直接抄的近路。1. 换工具这件事值得认真做一次先说一个很多人没意识到的事实DBeaver 和 Navicat 的“底层基因”完全不同这个差异决定了你会不会觉得它好用。Navicat 是一个闭源商业软件产品逻辑是把常用的数据库操作封装成“所见即所得”的图形界面做得很精致但同时也把很多 SQL 能力藏在了菜单后面。DBeaver 则是一个围绕 JDBC 构建的开源生态Community 版基于 Apache 2.0 协议完全免费它默认露出来的是一堆“给懂数据库的人用的控件”第一次打开会觉得信息密度特别高界面也不够“可爱”但当你用顺之后会发现这种开放反而给了你更大的控制权。1.1 先看清楚DBeaver 和 Navicat 本质差异我整理了一张对比表方便你一眼判断自己要不要切换。对比项NavicatDBeaver Community授权模式商业付费订阅制开源免费Apache 2.0支持的数据库MySQL、PostgreSQL、Oracle、SQL Server、SQLite 等通过 JDBC 驱动支持几乎全部主流库 各种国产库安装包体积比较大安装过程带一堆选项轻量下载快绿色版也很稳默认界面清爽新手友好信息密集需要一点时间适应SQL 编辑器好用自动补全强不差支持很多高级规则可自定义数据导入导出强向导完善强支持 CSV、Excel、JSON 等格式可调ER 图精美可用但需要主动“生成”而不是自动展示扩展性封闭只能等官方加功能插件机制社区活跃更新快适用人群想开箱即用、愿意付费开发/运维/数据分析想省钱又想要掌控感这张表不是说 Navicat 不好而是想说明DBeaver 不是 Navicat 的“廉价仿品”它是另一条路线上的产物。如果你平时只是连上库、双击表、看一眼数据Navicat 那种“傻瓜化”确实是优势但如果你要经常写复杂 SQL、需要在多种数据库之间来回切或者公司项目里有国产数据库需要连DBeaver 的通用性和免费特性就很香了。1.2 哪些人适合直接切换哪些人可以再等等我的建议是分三类个人开发者、学生、自由职业者强烈建议换。省掉授权费用只是表面收益真正的好处是你可以在任意环境、任意项目里放心装 DBeaver不用考虑“这台机器有没有授权”。公司内部工具标准化如果你的团队已经在用 Navicat且授权合规、没有人有意见没必要折腾。但如果公司要做成本控制或信创适配DBeaver 往往是更合适的统一客户端。重度依赖 Navicat 特定功能的用户比如天天用“数据传输”“结构同步”“图表设计”的人建议先并行使用两周确认 DBeaver 的替代方案能覆盖需求后再切别一上来就删老的。我个人属于第一类加上要给团队做信创环境适配所以切换是必然选择。2. 下载与安装官网入口和安装避坑DBeaver 的安装本身不难但网上搜“dbeaver下载”“dbeaver安装教程”很容易踩进第三方下载站的坑下载回一个捆绑了乱七八糟东西的安装包。这里我把正确姿势和细节写清楚。2.1 下载渠道认准官方入口DBeaver 的官网是 dbeaver.io打开之后首页就是 Download 按钮。你也可以直接去 GitHub 的 releases 页面下载里面能看到历史版本比如很多人找的 23.3.5 版本。Windows 用户建议下载 exe 安装包macOS 用户下载 dmgLinux 用户根据发行版选 deb 或 rpm。如果不想安装官网还提供了 zip 绿色版解压就能用。我个人推荐 Windows 上先用安装版因为会自动处理 JDK 关联和文件关联省掉很多手工配置。有几点要提醒认准 dbeaver.io 域名和 GitHub 官方仓库不要下载“XX软件园”“XX下载站”的版本这类站点的安装包经常带推广程序和全家桶。安装过程中选择“为所有用户安装”或者“仅为当前用户安装”按需选即可一般个人电脑选当前用户更干净。新版 DBeaver 自带一个可以连接云数据库和企业版功能的入口但 Community 版默认不启用不用管它。2.2 Windows 安装步骤安装过程就是典型的“下一步到底”但有几个选项值得留意双击 exe选择语言默认是英文后续在 Preference 里可以装中文语言包。选择组件时建议把“DBeaver 的关联文件类型”勾上这样以后双击 .sql 文件可以直接用 DBeaver 打开。选择安装路径这个看个人习惯但我强烈不建议放 C 盘系统盘权限很深的目录比如 Program Files因为 DBeaver 后来要缓存大量 JDBC 驱动和连接配置放到 D:\Tools\dbeaver 这类目录更清爽。安装完成后第一次启动它会提示是否检查更新你可以选手动检查。2.3 JDK 与驱动配置新手最容易卡壳的一步DBeaver 本质是个 Java 应用所以 JDK 环境很关键。新版安装包会内嵌或者自动检测系统里的 JRE一般不用你手动装 JDK。但如果启动时报错“找不到 Java 虚拟机”之类说明它没检测到运行时环境。解决办法有两条去官网下载带“jre”字样的安装包比如 dbeaver-ce-x.x.x-win32.win32.x86_64-jre.exe这种内置了运行时适合不想折腾 Java 的人。如果你已经装了 JDK比如 8、11、17、21可以在 DBeaver 安装目录下的 dbeaver.ini 里手动指定例如-vm C:\Program Files\Java\jdk-17.0.2\bin\javaw.exe注意这两行要放在-vmargs之前。驱动这块是 DBeaver 和 Navicat 最大的不同Navicat 把驱动内置好了DBeaver 则是第一次连某个数据库时提示你下载对应驱动。原因很好理解——开源软件希望能支持尽量多的数据库如果把所有驱动都塞进安装包体积会非常臃肿。所以第一次点“测试连接”时大概率会弹“Download driver files”直接接受即可。3. 高频操作对照教程把日常动作逐一带过这一部分我挑了使用频率最高的几个操作从 Navicat 的视角迁移到 DBeaver每个都给出完整步骤已经踩过坑的地方会额外标出来。3.1 新建连接并连接 MySQL避开 1045 报错先说 1045。很多人搜“navicat链接mysql报错1045”其实这个报错和工具无关是 MySQL 服务的验证逻辑在拒绝你核心原因无非这么几种用户名或密码填错。用户不存在。该用户的 host 限制里没有包含当前客户端 IP。密码加密插件不匹配比如 mysql_native_password 和 caching_sha2_password 的差异。在 DBeaver 里新建连接的路径是工具栏左上角的“新建连接”图标 → 选择 MySQL。然后填写主机、端口默认 3306、用户名和密码。填完后先别急着点“完成”点左下角的“测试连接”如果报 1045按下面顺序排查到 MySQL 服务器上确认用户存在SELECT user, host FROM mysql.user;确认密码没错必要时重置ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的新密码;确认权限和 host例如如果 DBeaver 跑在另一台机器上用户应该类似root192.168.1.%或者干脆root%生产环境慎用。新版本 MySQL 8 默认使用caching_sha2_password老驱动可能不支持。在 DBeaver 里下载最新驱动后一般就支持了如果还报错把驱动改成 5.1.49 或者 8.0.22 试试。连接成功后左侧数据库导航会出现你的库、表、视图、存储过程、函数等节点。有个小细节DBeaver 默认不会一次性把所有库都列出来如果发现有库看不见用 F5 刷新或者右键连接 →“连接设置”里调整“Driver properties”。3.2 创建数据库字符集和排序规则怎么选在 Navicat 里创建数据库很顺DBeaver 也差不多但要注意默认值的坑。步骤左侧导航选中连接 → 右键 →“新建数据库”弹出窗口里填数据库名然后把字符集Character set选成 utf8mb4排序规则Collation选 utf8mb4_general_ci 或 utf8mb4_unicode_ci。这里多说一句DBeaver 新建数据库时默认可能继承服务器全局设置如果你不主动改很可能建出 latin1 或 utf8mb3 的库中文和数据长度都会出问题。所以每次建库字符集这栏务必检查一遍。如果你用 SQL 方式建库DBeaver 的 SQL 编辑器里写好CREATE DATABASE test_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;执行方式是按CtrlEnter它只执行高亮或光标所在的那一条语句不会把所有 SQL 一次性跑完这个和 Navicat 的“运行已选择的”逻辑不太一样刚切换时容易误以为没执行。3.3 执行 SQL 文件两种方式都别搞混DBeaver 执行 SQL 文件有两种场景很多人搜“dbeaver执行sql文件”时根本没分清第一种你只是想把 .sql 文件打开看一下、挑几条执行。这时候直接CtrlShiftO或菜单 File → Open File 打开文件会在一个 SQL 编辑器里打开你可以手动执行全部或部分。第二种你希望整个文件作为脚本一次性执行比如导入备份的 dump 文件。这时候不要用打开文件而应该用菜单 “文件 → 执行脚本” 或者工具栏的“打开脚本”按钮旁边的小箭头。这样 DBeaver 会按脚本内容顺序执行并且把多个语句的结果分页展示。实操建议导入大 SQL 文件前先检查文件里的编码最好和数据库字符集保持一致。如果遇到“Unknown command”之类的错误件多半是文件里带了SOURCE或者DELIMITER这类 MySQL 命令行专用指令DBeaver 对这类指令支持有限需要手动拆分。另外DBeaver 执行长事务时进度条可能长时间不动这不一定是卡死打开“任务”视图能看到具体执行状态。3.4 搜索表名别再盯着导航树一个个翻了Navicat 里看某个表一般是在左侧一层一层展开。DBeaver 里如果库多、表多强烈建议直接用“实体搜索”快捷键是CtrlShiftF弹出一个类似编辑器全局搜索的面板输入表名的关键字它会在当前连接的所有 schema 里搜。还有一个更好用的按CtrlShiftS可以打开 schema 的快速过滤框。你只需要输入表名的一部分比如user它就会列出一堆包含 user 的表名直接回车跳到目标表。我习惯的做法是连接名那一级的左侧导航树上直接按键盘字母它会弹出快速过滤比用鼠标点快很多。这个功能很多人没用过强烈推荐试试。3.5 字体大小设置保护眼睛的第一步老有人问“dbeaver字体大小设置”因为 DBeaver 默认字体偏小尤其在高分屏下像蚂蚁爬。设置路径菜单 “窗口 → 首选项” → “用户界面 → 字体”。在这个界面里你可以分别调整树视图、编辑器、结果集、表格编辑器等不同区域的字体和字号。我个人的推荐树视图11pt 或 12pt。SQL 编辑器12pt等宽字体Consolas 或 JetBrains Mono。结果集11pt行高适中。注意DBeaver 某些版本里字体设置是分开的改完编辑器字体不代表结果集字体也变了需要每个页签分别设置。改完一般立即生效个别情况要重启。3.6 数据编辑与增删改查在 DBeaver 里查看表数据双击表名默认会打开“数据”标签页直接显示前 200 行可以在首选项里改成 500 或者 1000 行。编辑单元格先点击单元格再按回车进入编辑模式改完用CtrlEnter提交修改到数据库。新增行数据表格底部有个“新增”按钮带加号的小图标点一下会插入一行空白记录填好字段后提交即可。Navicat 用户需要适应一下DBeaver 的表格编辑不是“自动保存”风格而是要明确执行“提交”动作这反而能避免手滑误改数据。我还发现一个小细节DBeaver 的数据表格里要快速筛选直接右键列头 →“过滤器” → 填条件比写 SQL 快很多。比如查看状态列里所有值为 1 的行直接在过滤器里写status 1表格就只剩符合条件的数据。4. 从 Navicat 带过来的习惯怎么在 DBeaver 里继续用切换工具最痛的其实不是功能缺失而是肌肉记忆。我把自己常用的 Navicat 习惯一个个对照到 DBeaver整理成了一套平移方案。4.1 快捷键映射对照表操作Navicat 快捷键DBeaver 快捷键新建查询CtrlQAltShiftN / Ctrl]执行当前 SQLCtrlRCtrlEnter格式化 SQL无默认CtrlShiftF全局搜索表/对象无CtrlShiftF打开 SQL 编辑器CtrlQAltShiftN刷新连接/对象F5F5跳转到某个表无CtrlShiftS注释/取消注释Ctrl/Ctrl/初切过去时最难受的是执行当前语句从CtrlR变成CtrlEnter我至少花了一周才适应。别硬扛可以在 DBeaver 的“首选项 → 用户界面 → 键”里把快捷键改成你自己熟悉的组合。4.2 数据导出CSV、Excel、JSON 全覆盖Navicat 导出向导好用DBeaver 也不差。选中查询结果集右键 →“导出数据”会弹出导出向导。你可以选择导出格式CSV、Excel、JSON、XML、HTML 甚至直接生成 INSERT 语句。这里有个实操心得如果只是做临时备份我推荐导出为“CSV”并在选项里设置好 UTF-8 编码这样 Excel 打开不会乱码。如果是给开发同学做测试数据用“SQL INSERT”格式更通用选项里还可以控制是生成单条 INSERT 还是多值批量 INSERTDBeaver 这个细节做得比预期好。导出行数方面DBeaver 默认导出的是当前结果集全部行如果你在表格里 CtrlA 选中了一部分它也能只导出选中部分非常灵活。4.3 ER 图用“生成”代替“自动展示”Navicat 的数据库模型设计很直观DBeaver Community 版没有直接对应那种“画布式建模”的完整功能但看表结构关系足够用了。打开一张表后下方标签页里有一个“ER 图”标签点开就能看到当前表与关联表之间的关系。如果你想看整个 schema 的 ER 图右键 schema →“打开 ER 图”它会自动从元数据生成实体关系图支持拖拽、调整布局。我用下来觉得 DBeaver 的 ER 图更适合“快速理解关系”不适合精细建模。如果你主要是做数据库设计、画复杂的模型图那 Navicat 或专门的建模工具如 MySQL Workbench仍会顺手一些。4.4 SQL 编辑器的高级玩法执行计划、参数化、连接变量DBeaver 的 SQL 编辑器有一个我很喜欢的设计可以把当前连接的信息直接暴露成变量比如-- connection、${current_database}等这在写跨库脚本时特别有用。执行计划查看在 SQL 编辑器里写完 SQL按CtrlShiftE可以打开执行计划视图MySQL、PostgreSQL 都支持。切换到“文本”模式还能看到完整的EXPLAIN内容这个对排查慢查询帮助巨大。参数化模板写WHERE id :id时DBeaver 会识别命名参数并在执行时弹出输入框相当于把 SQL 当脚本用省去在代码里反复改参数的时间。5. 兼容性与国产数据库以 KingBase 为例很多人换 DBeaver 其实是被国产化环境推着走的我这边也是因为项目要适配 KingBase 才真正离不开它的。这部分我把通用的“驱动管理”方法讲透你以后连人大金仓、达梦、GaussDB 就都不慌了。5.1 驱动管理核心是 JDBC 驱动Navicat 在设计时把主流的驱动内置了DBeaver 则把驱动剥离成“可以按需下载”的组件这带来了两个结果一是安装包小二是第三方驱动的接入非常自由。连接任何一种数据库本质上就是“用户信息 主机端口 JDBC URL 驱动类名”这条路。在 DBeaver 里新建连接窗口选择数据库类型后底下有个“驱动属性”或“驱动设置”你可以直接指定驱动文件位置。如果你下载的驱动是kingbase8-8.6.0.jar之类的文件建议放到一个固定目录比如D:\Tools\jdbc-drivers然后在 DBeaver 驱动管理器里新建一个驱动条目填驱动名称、类名如com.kingbase8.Driver、URL 模板如jdbc:kingbase8://{host}:{port}/{database}再把 jar 文件加进去测试连接即可。5.2 连接人大金仓 KingBase 的实际案例DBeaver 新版驱动库里已经自带 KingBase 条目新版本直接新建连接 → 搜索“KingBase”就能看到。步骤如下新建连接 → 输入“KingBase”选择对应的驱动。填写主机端口KingBase 默认端口是 54321如果没改的话。用户名密码和 Oracle 模式或 PG 模式相关看你的数据库初始化方式。连接属性里如果连接失败且日志提示“no valid driver”多半是驱动没加载或版本过老手动下载 KingBase 官方 JDBC 驱动并替换。连上之后你会发现 DBeaver 对 KingBase 的兼容性相当好表结构、存储过程、函数都能正常浏览SQL 编辑器也能跑常见语法。唯一可能不习惯的是金仓数据库有 Oracle 兼容模式和 PG 兼容模式之分DBeaver 显示出来的 schema 结构会略有差异连接配置里看清楚就行。6. 常见问题与排查技巧实录最后这部分是我这半年实操里遇到的问题清单按“什么症状 → 什么原因 → 怎么解决”整理省得你满世界搜。6.1 问题速查表症状常见原因解决方法连接 MySQL 报 1045密码/用户/host 权限问题回 MySQL 里确认用户权限必要时用ALTER USER重置密码检查 host 匹配连接报“连接被拒绝”端口不对、防火墙拦截或服务未启动检查netstat/ss确认 MySQL 端口真的在监听临时关闭防火墙试连首次连接提示下载驱动但一直失败网络无法访问 Maven 仓库手动下载驱动 jar通过驱动管理器导入或配置代理SQL 执行结果是灰色的看不出执行成功可能执行了查询但没有获取结果集确认当前语句是否是 SELECTDBeaver 的“执行”按钮和“执行脚本”按钮要区分开中文乱码连接参数缺characterEncodingutf8在连接设置里加 useUnicodetrue、characterEncodingutf8修改了字体但界面没变化不同区域的字体是分开设置的把首选项里“树”“编辑器”“结果集”都分别改一遍打开大表卡顿DBeaver 默认取了所有行或太多行在首选项里设置“取行数”上限比如 200 行用 SQL WHERE 条件限制结果用mysqldump导出的文件执行报错脚本里有 DBeaver 不认的指令去掉命令行的SOURCE、DELIMITER等内容拆成纯 SQL 执行6.2 我的几条独家经验第一DBeaver 的连接配置是可以直接作为团队共享文件导出的。在导航树上右键连接 →“导出配置”会生成一个.dbeaver-data-sources.xml同组人拿到后直接导入十几台机器的连接配置就能保持一致。我在团队里就是靠这个把所有成员的测试库连接统一管理的比每人发一份“手动配置教程”高效太多。第二如果你觉得自己机器内存紧张可以在 dbeaver.ini 里把-Xmx从默认的 2G 调小一点比如-Xmx1024m因为 DBeaver 是基于 Java 的默认堆内存设置其实偏夸张日常用几百兆就够。反过来如果经常处理超大数据集那就保持 2G 以上别乱调。第三关于“DBeaver AI 助手”和 Ultimate 版有些朋友搜到dbeaver ultimate 26.2 license之类的词会心动。我的看法是Community 版 90% 的功能已经够用Ultimate 增加的是 NoSQL 数据库的图形化、云数据库高级支持、AI 辅助生成 SQL 这些锦上添花的东西。对一个主要是关系型数据库、偶尔处理 JSON 的人来说免费版真的不是“阉割版”不该为用不上的功能付费。除非你的项目大量使用 MongoDB、Redis 这类非关系型数据库而且你又特别想要图形化界面那时候再考虑。第四还有一个特别容易被忽略的DBeaver 里有“连接类型”这个设置默认可能是“开发”但在生产环境很建议把连接类型改成“生产”或“只读”。改完之后DBeaver 会默认阻止一些危险操作比如没有 WHERE 条件的全表删除会弹二次确认。这种安全机制在我看来比 Navicat 更让人安心尤其是晚上犯困的时候能拦你是真的保命。最后再分享一个小习惯我每周五下班前都会用 DBeaver 的“数据库任务”功能把几个核心库的元数据导出一次做一份表结构快照放在本地 Git 仓库里。这样等哪天某张表字段被改得不认识了我能直接 diff 出是哪次变更造成的。这个方式不管是 Navicat 还是 DBeaver 都能做但 DBeaver 的命令行脚本化能力和 JDBC 层面的开放性让整个流程更轻便我想这也是我喜欢它的原因之一。
返回列表