十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Navicat快速入门指南:从数据库连接到备份排错的完整实践

Navicat快速入门指南:从数据库连接到备份排错的完整实践 如果你刚接触 Navicat第一印象多半是“这个界面怎么这么多按钮”。别慌Navicat 本质上就是把数据库操作从命令行翻译成可视化交互你不再需要背mysql -u root -p、mysqldump这些参数而是用鼠标点几下就能完成建库、导数据、写 SQL、备份这些活儿。我自己最早用命令行管理 MySQL遇到一次要改一百多行数据手写 SQL 改到怀疑人生后来换成 Navicat整个过程从半小时压缩到几分钟从那以后再也没回去过。这篇文章不打算把 Navicat 的所有功能都过一遍那不叫快速入门。我只讲一条主线从下载安装到第一次建立连接再到日常最常用的查询、导入导出、备份最后把几个高频报错一次性说清楚。适合刚接触数据库、或者想从命令行切换到图形化工具的同学参考熟练掌握这套流程日常开发里 90% 的数据库操作都能覆盖了。1. 数据库工具的定位Navicat 解决的不只是“连上数据库”的问题1.1 命令行能做的事它都做了但做得更顺手很多人问我会命令行为什么还需要 Navicat说实话命令行在脚本化、自动化场景下不可替代比如定时任务、服务器上的批量操作。但在日常开发和运维里你面临的大多数需求其实是“看一眼数据”“改一条记录”“导出一张表”这些用命令行做会很别扭。举一个最典型的例子你想查询一张表里某个字段包含特定关键词的数据。命令行里你得敲SELECT * FROM users WHERE nickname LIKE %张三%;结果出来后如果数据是中文终端里的排版经常会错乱看着非常难受。换到 Navicat查询结果直接以表格形式呈现点一下列头还能排序双击单元格就能直接修改数据并提交。同样的操作效率和体验完全不在一个量级。Navicat 这个产品覆盖的数据库种类也足够全MySQL、MariaDB、PostgreSQL、Oracle、SQL Server、SQLite 等主流数据库都能管理。特别提一下Navicat Premium 还支持达梦数据库这是很多国产化项目里实际在用的方案。你可以理解成装一个 Navicat Premium等于同时拥有了多个数据库客户端的集合不同数据库之间的表结构对比、数据同步也能在同一个界面里完成。1.2 学习成本低但适用场景也有边界Navicat 的定位是“通用数据库管理工具”适合的人群很广后端开发排查线上数据、数据分析师做临时查询、学生做课程设计、运维人员导出报表都能直接用。它最大的价值是把“记忆成本”降到最低——你不用记住每个数据库的差异因为界面上已经把操作逻辑统一了。不过它也不是万能的。如果是几千台实例的大规模自动化运维那需要的是专业运维平台如果是嵌入到业务代码里的数据库操作也不会用到这个工具。Navicat 的定位恰恰是“人直接操作数据库”的场景把这类场景做到极致就已经够了。2. 安装与版本选择先把环境准备对后面才顺畅2.1 版本差异Premium 还是专用版打开 Navicat 官网会发现版本非常多但其实分两类Navicat Premium全功能版一个工具支持 MySQL、MariaDB、Oracle、PostgreSQL、SQL Server、SQLite 等多个数据库。日常开发推荐直接选这个。Navicat for MySQL / for Oracle / for PostgreSQL 等单数据库版本界面和功能阉割掉其他数据库相关部分。如果你只用一个数据库这个版本更便宜但后续可能不够用。我第一次用的时候图便宜选了 for MySQL 版后来项目换到 PostgreSQL又得重新下载安装非常折腾。所以建议一步到位直接用 Premium。Navicat 在 Windows、macOS 上都有原生安装包Linux 也有对应的安装格式。macOS 安装时如果提示“已损坏”之类的问题通常是因为没有给应用执行权限在“系统设置 - 隐私与安全性”里允许一下就行。网上有大量关于激活码、注册机的信息这类东西我从不在生产环境使用。数据库客户端连接的是真实数据来路不明的安装包只要内置一点后门你的库就等于是裸奔的。官方有全功能试用版周期足够你体验完整功能日常学习完全够用。2.2 连接前必查的三项环境条件安装完 Navicat别急着建连接。先确认数据库服务器本身是可访问的否则 Navicat 这边怎么点都会报错。我把排查顺序固定为三步第一确认数据库服务已启动。如果数据库和客户端在同一台机器上Linux 下可以用systemctl status mysql或ps -ef | grep mysql检查Windows 下到“服务”里看 MySQL 服务是否在运行。如果服务都没启动Navicat 报“连接不上”只是表象根因在服务本身。第二确认端口。MySQL 默认端口是 3306Oracle 是 1521达梦数据库默认是 5236。Navicat 连接窗口里这些端口一般会自动带出来但有时候你的数据库实例改过端口那就要填实际端口。用netstat -tlnp | grep mysql可以快速看到 MySQL 实际监听的端口。第三确认网络是通的。本地连接一般没问题远程连接才是重灾区。服务器的防火墙要放行对应端口云服务器还要在安全组里加一条入站规则。我遇到过很多次“Navicat 连不上但在服务器本机用命令行能连上”的情况最后查下来都是防火墙或云安全组的端口策略没配置。如果你是要连接 Linux 服务器上的 MySQL还有两个容易忽略的点一是 MySQL 的绑定地址默认配置文件my.cnf里bind-address 127.0.0.1的话外部机器是无法访问的需要改成0.0.0.0二是 MySQL 用户的主机限制root 用户可能只允许localhost登录外部连不上时要去mysql.user表里确认 host 字段。这三项检查完了再回到 Navicat 里填连接参数成功率会高非常多。3. 第一次建立连接Navicat 连接 MySQL 的全流程拆解3.1 新建连接时每个字段的真正含义打开 Navicat点左上角“连接”选择“MySQL”会看到一整页待填项。很多新手在这里就开始懵了其实核心只有五个字段连接名你自己起的名字用来区分不同连接叫“本地测试”“生产环境-订单库”都可以不参与实际连接。主机数据库服务器地址。本机填localhost或127.0.0.1远程填服务器 IP 或域名。端口默认 3306除非你的数据库改过端口否则不用动。用户名 / 密码你用来连接数据库的账号密码不一定是 root建议用专门授权的账号。下方还有一个“高级”选项卡重点看这几个“使用SSL”。MySQL 8.0 以后很多服务器默认要求 SSL 连接。Navicat 默认会尝试 SSL如果服务器没配置证书连接时报错时可以在这里把 SSL 模式改成“如果可用”或“禁用”。“自动提交”。这个选项很多人忽视了它的作用是控制每条 SQL 语句是否立即生效。默认勾选意味着执行一条修改语句就自动提交不可回滚。如果你需要批量操作后统一确认可以取消勾选后面我会专门讲这个细节。“编码”。一般选utf8mb4或自动乱码问题多半出在这。用中文字段名、中文数据时字符集不对会直接看到一堆问号。3.2 从连接成功到看到数据的标准路径连接成功后左侧树形结构会显示一个数据库实例。双击就可以展开能看到“表”“视图”“函数”“事件”等分类。第一次用的人记住一条主线连接 → 数据库 → 表 → 数据。新建一个数据库右键连接或数据库列表区域选“新建数据库”名称填业务相关字符集选utf8mb4排序规则选utf8mb4_general_ci或utf8mb4_unicode_ci。注意utf8在 MySQL 里其实是utf8mb3存 emoji 会报错直接用utf8mb4更省事。进入某张表后界面上有几个选项卡表看数据、结构看字段、查询写 SQL、权限、外键等。右键一个表可以进行“设计表”操作在这里加字段、改类型、设置主键。字段类型选择时要注意比如INT和BIGINT的区别、VARCHAR和TEXT的区别设计表阶段定错了后面数据量大再改会很痛苦。3.3 连接 Oracle 和达梦数据库的差异如果你只用 MySQL这部分可以跳过。但如果你要连 Oracle 或达梦数据库有几个地方和 MySQL 完全不一样容易踩坑。Oracle连接时填的是“服务名”或“SID”不是数据库名。默认端口 1521。Navicat 里连接类型选 Basic服务名填 Oracle 实例的服务名比如orcl而不是随便填一个库名。Oracle 对大小写敏感的问题也常有人问建议服务名按 DBA 给的原文填写。达梦数据库达梦是国产数据库Navicat Premium 从 16 版本开始支持连接。默认端口 5236连接时首先要确认你有访问权限的“模式”Schema类似 Oracle 的概念。很多人第一次连达梦会去填数据库名结果报“无效的数据库名”其实要填的是模式名。连接成功后在“模式”下拉框里可以看到可用的 schema选中对应的就能看到表对象了。达梦的 SQL 语法和 Oracle 兼容度很高你在 Oracle 里写的查询在达梦里一般也能跑。4. 查询、导入导出、备份新手最该先掌握的日常操作4.1 查询编辑器的使用节奏大多数人和 Navicat 打交道最多的就是查询。点击菜单栏“查询 - 新建查询”或者直接按快捷键会打开一个 SQL 编辑器窗口。这里支持写多句 SQL选中其中一段再运行就能只执行选中的部分这个功能很有用调试大脚本时不用反复注释。举个实际例子你要查用户表中最近一周注册的用户SELECT id, nickname, created_at FROM users WHERE created_at NOW() - INTERVAL 7 DAY ORDER BY created_at DESC;运行后下方“结果”区直接显示成表格。你可以在结果里筛选、排序、查看行数据甚至双击单元格直接修改数据修改完点“提交”就写回数据库。这个能力对临时改数据非常友好但也要注意结果集编辑默认可能开启你双击改一个字段不小心中招了那就是真实数据变更。建议在“工具 - 选项 - 编辑器”里把“在结果网格中编辑数据”的触发方式设置得更保守一些或者每次改完数据先看一眼 SQL 预览再提交。查询编辑器还有一些很实用的辅助功能输入表名后会出现字段自动补全选中一段 SQL 后右键可以“格式化”让缩进变整齐长 SQL 可读性提高很多。左下角的“连接”下拉框可以切换不同的数据库实例同一段 SQL 换个连接就能跑不用复制到别的窗口。4.2 导入导出数据迁移的两条路线数据迁移是 Navicat 的一个高频场景。比如你手里有一份 Excel 用户名单要导入 MySQL或者要把生产库的一张表导出成 SQL 文件给测试环境。Navicat 的导入向导和导出向导把这两件事做得很顺手但细节上有几个坑必须注意。导入 Excel 文件时选择目标表后向导会进入字段映射界面需要你手动确认 Excel 的每一列对应表的哪一个字段。最容易出问题的是Excel 表头是中文或特殊字符而表字段命名是英文自动匹配可能全部对不上你要手动拖拽对应关系。还有日期格式Excel 里的2024/10/01导入 MySQL 后可能是字符串而不是日期类型建议导入后立刻抽查几行数据验证。导出 SQL 文件时右键要导出的数据库或表选“转储 SQL 文件”可以选择“仅结构”或“结构和数据”。导出的文件是一个完整 SQL 脚本里面包含建表语句和 INSERT 数据。另一个环境上直接运行这个文件就能复现一模一样的表。需要注意大表导出时勾选“使用扩展插入”能显著减小文件体积导入速度也会快很多但导出的 SQL 文件里如果有特殊字符要确认文件编码是utf8否则导入后中文乱码。如果你是在多个不同类型的数据库之间迁移数据比如 MySQL 表同步到 PostgreSQL用“工具 - 数据传输”向导更方便它能在不同数据库之间直接搬运数据不用先导出再导入。4.3 备份与计划保护自己最重要的一步刚学 Navicat 的时候我有一段时间完全没有备份习惯结果有一次手滑执行了DELETE FROM 表把所有测试数据删了那个酸爽至今记忆犹新。后来我养成了一个铁律任何结构变更和数据清理之前先备份。Navicat 里的备份不是传统意义上的“备份集”而是“转储 SQL 文件”。右键数据库选“转储 SQL 文件”填好保存路径几秒钟到几分钟不等就会生成一个完整 SQL 脚本。恢复的时候右键数据库选“运行 SQL 文件”选择之前转储的文件执行即可。这个过程对于中小型数据库绰绰有余。还有一个高级一点的用法是“自动化”模块也就是计划任务。Navicat 里可以新建一个“批处理作业”把多个数据库的备份任务串起来然后设定调度计划比如每天凌晨两点自动转储。这个功能对蒲公英式的个人服务器或者小团队项目来说非常实用不用自己写 cron 脚本。我现在的习惯是每天凌晨自动备份一次每周再手动做一次异地拷贝基本可以保证数据安全事故发生时有后悔药可吃。5. 把效率再提一档不自动提交、外键设计、快捷键这些细节5.1 自动提交到底要不要关一个影响安全的设置默认情况下MySQL 的autocommit是开启的每执行一条UPDATE、DELETE、INSERT都会立即写入磁盘你想后悔都来不及。Navicat 连接设置里的“自动提交”选项会直接影响你在这个连接里执行 SQL 时的事务行为。我建议在日常使用的连接里把“自动提交”这个选项关掉。原因很简单多了一层反悔的机会。举个例子你要清理一张表里的重复数据DELETE FROM orders WHERE status 已取消;如果自动提交是关闭的执行完这句之后你可以先SELECT查一下剩余数据数量确认没问题了再执行COMMIT发现删多了就执行ROLLBACK瞬间恢复。这在生产环境里等于给自己加了一道保险丝。Navicat 的查询编辑器顶部有“开始事务”“提交”“回滚”三个按钮对应BEGIN、COMMIT、ROLLBACK。一个典型操作节奏是点“开始事务”进入事务模式 → 执行修改 → 检查结果 → 点击“提交”或“回滚”。这里有个注意点如果你在不支持事务的存储引擎上操作比如 MyISAM 表ROLLBACK是不会生效的。所以用这个功能之前先确认你的表是 InnoDB 引擎。5.2 在图形界面里添加外键的正确姿势外键这个问题很多新手要么没用要么用的时候各种报错。Navicat 提供了一个可视化的外键设置入口你不需要手写FOREIGN KEY约束语句只需要在表设计器里点几下。打开一张表选择“外键”选项卡点击“添加外键”。这里需要填四组信息字段当前表里要作为外键的字段比如user_id。参考数据库/表要关联的目标表比如users表。参考字段目标表里被参考的字段通常是id。更新和删除规则也就是当被参考表的数据发生变化时当前表的数据怎么处理。更新规则和删除规则有CASCADE、RESTRICT、SET NULL、NO ACTION这几个选项。用生活化一点的概念解释订单表里的user_id关联用户表的id如果用户被删了他的订单怎么办CASCADE用户删除他的订单也联动删除适合“主表数据删除时从表数据失去意义”的场景。RESTRICT用户被引用时不允许删除先删订单才能删用户保守策略大多数业务场景推荐。SET NULL用户删除后订单里的user_id变成 NULL适合需要保留记录但不再关联用户的场景。新手添加外键失败最常见的原因是字段类型不一致。比如当前表的user_id是INT但目标表的id是BIGINTMySQL 会直接报错。另一个原因是目标表的被参考字段不是索引或主键这个约束在 MySQL 里必须满足否则建外键时会提示失败。5.3 查询创建器不懂 SQL 也能拼出 JOIN 查询Navicat 里有一个容易被忽视的“查询创建器”点“新建查询”旁边的下拉箭头就能看到。它的逻辑是把 SQL 的编写变成图形化操作左侧选中要查询的表或视图拖到右侧画布上软件会自动用表之间的外键关系画出关联线。你勾选要输出的字段、设置过滤条件、选择排序规则点击“运行”Navicat 就自动把 SQL 生成并执行。对于刚 SQL 入门、JOIN 语法还不太熟练的人来说这等于提前拿到了答案。更妙的是查询创建器生成的 SQL 会直接显示出来你可以对照着看它生成的语句结构时间长了自然就学会 LEFT JOIN 和 INNER JOIN 的区别了。我自己现在写复杂报表 SQL 也会开查询创建器做第一步框架再微调生成出来的代码比纯手写快很多。5.4 几个好用的快捷键和偏好设置Navicat 的快捷键在不同版本里略有差异但有几个是通用的。运行当前查询Windows 下一般是Ctrl RmacOS 下是Command R。新建查询Ctrl Q。刷新对象列表F5。格式化 SQL一般是Ctrl Shift F。设置里可以把字体调成等宽字体比如 Consolas 或 JetBrains Mono中文显示也正常看长 SQL 舒服很多。还有一个我强烈推荐的设置在“工具 - 选项 - 查询编辑器”里勾选“SQL 格式化”相关的选项这样新建查询时默认会带语法高亮字段名、关键字、字符串一眼就能分辨排查错误效率高不少。6. 连接报错排查最常见的几个坑与修复路径把最容易遇到的问题列在这里。每个我都实际遇到过解决方案不是百度出来的是踩过坑后总结的。6.1 1045 Access denied认证层最常见的问题报错信息大概是Access denied for user rootlocalhost (using password: YES)或者类似的变体。这个错误的本质是用户名、密码、主机三者的组合不满足数据库的认证规则。排查链路不长按顺序来第一步确认密码。密码里如果含、#、空格等特殊字符填在 Navicat 里时要注意空格和转义问题最稳的办法是在命令行里mysql -u 用户名 -p先测试能连上说明密码没错。第二步确认 host。Access denied的报错里一般会显示rootlocalhost或rootxxx.xxx.xxx.xxx这个后面就是 MySQL 认可的登录来源。如果你用 Navicat 从远程连接那么用户 host 必须允许你的 IP或者直接用%通配。查看用户的 host 权限SELECT user, host FROM mysql.user WHERE user root;如果 host 是localhost那远程连接肯定失败需要执行授权或修改 hostALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 新密码; CREATE USER root% IDENTIFIED BY 新密码; GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; FLUSH PRIVILEGES;第三步确认插件。MySQL 8.0 默认的认证插件是caching_sha2_password老版本 Navicat 可能不兼容报错会变成本地 Navicat 版本无法识别认证方式。解决方案是升级 Navicat 版本或者把用户改为mysql_native_password。我个人建议升级工具而不是降安全标准。6.2 10060 / 连接超时网络层的“全链路排查”报Cant connect to MySQL server (10060)时很大概率不是数据库账号问题而是网络层面根本到不了 MySQL。排查链路从近到远先看服务器本机能不能连在服务器上执行mysql -h 127.0.0.1 -P 3306 -u root -p能连说明 MySQL 服务正常问题出在网络链路。接着在本地机器上测试端口通不通Windows 下telnet 服务器IP 3306如果 telnet 显示无法连接要么是防火墙没放行要么是安全组没加规则要么是 MySQL 没监听对应网卡。在服务器上确认监听地址netstat -tlnp | grep 3306如果监听地址是127.0.0.1那外部肯定连不上去my.cnf把bind-address改成0.0.0.0并重启 MySQL。如果监听地址已经是0.0.0.0那就是防火墙等级的问题逐层检查firewalld或iptables和云控制台的安全组规则。6.3 SSL 连接失败新版本 Navicat 的高频门槛用 Navicat 连 MySQL 8.0 时有个报错容易让新手崩溃Authentication plugin caching_sha2_password cannot be loaded或者是 SSL 连接相关的错误。前者一般是因为客户端太旧后者通常是因为 MySQL 8.0 默认开启 SSL而服务器的自签名证书或 SSL 配置不完整。Navicat 连接设置里找到“使用SSL”相关选项改成“如果可用”或者直接关闭 SSL大多数情况下就能连上。注意这并不说明服务器不安全只是客户端工具和服务器之间的 SSL 策略不匹配。如果你对数据链路安全有硬性要求正确的做法是让 DBA 在服务器上配置好完整的证书链而不是一刀切禁用。6.4 Oracle / 达梦连接失败别再用 MySQL 的思维去填表连接 Oracle 报ORA-12514: TNS listener does not currently know of service说明 listener 配置或服务名不对。常见原因填了数据库名而不是服务名。Oracle 的数据库实例名称instance name和服务名service name是两个概念Navicat 里填的是服务名。如果你不确定可以用命令行工具lsnrctl status查看当前 listener 注册的服务列表。连接达梦数据库报“网络通信失败”或“无效的数据库名”时先确认端口是不是 5236然后再确认模式名。达梦的模式类似于其他数据库的“用户”你连接的账号能看到哪些模式取决于 DBA 给你分配的权限。有些新手把“达梦数据库”当成了 MySQL 的库概念填了实例名但达梦连接其实是通过 IP 端口 账号 模式来定位对象的。6.5 排查思路总结一个通用的分层法把上面所有报错总结成一个通用排查方法从外到内逐层检测。第一层网络通不通ping / telnet。 第二层端口通不通telnet IP 端口 / nc -vz。 第三层服务是否监听正确地址netstat。 第四层认证是否通过账号、密码、host、插件。 第五层字符集和 SSL 是否匹配乱码、SSL 报错、编码设置。任何一次连接失败都按这个顺序过一遍基本十分钟内能定位问题。数据库报错信息往往只会暴露最后一层的表象真正的原因常常埋在前面几层。最后再分享一点个人经验我也是从命令行时代一路踩坑过来的Navicat 这类工具真正改变的不是“能不能操作数据库”而是把操作数据库的精力节省下来让人的注意力放在数据本身和业务逻辑上。建议刚入门的朋友别急着把所有按钮都摸透先跑熟“连接数据库 → 写查询 → 导入导出 → 定时备份”这条主线你就已经超过身边大部分同事了。最后说一个我吃了亏才学会的小习惯每次打开 Navicat 执行修改操作之前先看一眼左上角当前选中的连接是哪台机器、哪个库。别问我为什么这么说——你试过一次在生产库连接上执行本该在测试库执行的UPDATE就明白了。开始之前多花两秒钟确认比事后花两个小时恢复数据要划算得多。
返回列表