ARTICLE DETAIL

资讯详情

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

Navicat连接MySQL全流程详解:从安装到建库建表及常见报错排查

Navicat连接MySQL全流程详解:从安装到建库建表及常见报错排查 下午第5、6节课连着两节MySQL课老师手把手带着我们把Navicat连接到MySQL数据库。说实话我刚装好MySQL那会儿一度以为自己把后端装坏了——命令行能进、图形工具死活连不上这种感觉新手十有八九都体会过。这篇笔记就是把整个连接过程完整复盘一遍从环境准备、Navicat安装到新建连接、建库建表再到各种连接报错怎么排查按课堂节奏从头到尾捋清楚。不管你是在校学生、自学转行还是公司里刚接手数据库运维的新人只要你的目标是把MySQL跑起来、用Navicat看到数据、能写几个广SQL这篇笔记可以直接照着操作。我会把每一个步骤背后的原因也讲明白而不是只丢给你一串点击路径这样哪怕遇到课堂上没讲过的报错你也能顺着思路自己找原因。1. 先把概念捋清楚MySQL装好了为什么还要连接1.1 MySQL的本质是一个服务端程序很多新手会有一个误区觉得MySQL安装完就能用了。实际上MySQL是一个典型的客户端-服务端架构程序。你安装MySQL的时候装的是一个负责存储和管理数据的服务端它默认监听3306端口等待着其他程序来跟它通信。而我们在命令行里输入mysql -u root -p进入的那个黑窗口本质上是一个命令行客户端它只是众多客户端的一种。打个比方MySQL服务端是一家仓储物流中心数据是仓库里的货物而命令行客户端只是一个对讲机。你用对讲机可以喊话、查库存、发货但效率不高、操作不直观。Navicat是另一台可视化的管理终端你能看到仓库货架的实时布局、能拖拽操作、能一键查询但前提条件是一样的——你得先跟仓储中心建立一条稳定的通信通道。这条通道就是所谓的连接。理解这一点之后很多问题就迎刃而解了。比如为什么Navicat连不上但命令行能进去本质上是这条通道在Navicat那端没有打通而MySQL服务端本身可能运行得好好的。连接失败≠数据库坏了这个认知能帮你少走很多弯路。1.2 为什么推荐用Navicat而不是死磕命令行命令行是DBA的基本功这点毋庸置疑。但对于学习阶段的你来说Navicat能极大降低认知负担。原因有几个第一可视化降低了理解成本。在Navicat左侧的导航树里你能一眼看到当前连接下有几个数据库、每个数据库里有哪些表、每张表的字段结构、索引、外键关系。命令行里你得挨个敲SHOW DATABASES;、USE xxx;、SHOW TABLES;效率差距不是一星半点。第二改写和调试SQL更方便。Navicat查询编辑器自带关键字高亮、代码提示、格式化功能写完SQL点一下执行结果以表格形式返回到下方哪里报错、影响了几行清清楚楚。命令行里SQL写错了只能重新敲一遍想回看历史命令都得翻屏。第三数据导入导出、同步、备份都能点鼠标完成。课程后期你会接触到把Excel表导入数据库、把线上数据同步到测试库这类需求Navicat的工具集能省掉大量手动造数据的时间。我不反对大家花时间练命令行恰恰相反我建议两条腿走路用Navicat做日常操作和学习用命令行理解SQL的本质。但第一堂课先用更友好的工具把连接数据库这件事的流程跑通建立起信心剩下的事都好说。2. 环境准备MySQL安装与Navicat的选择2.1 安装MySQL时容易被忽略的几个点我们课程用的MySQL 8.x版本安装方式用的是官方MySQL Installer。如果你是自己装有几个点必须认真对待不然后面连接时大概率要踩坑。**第一端口必须保持3306。**安装过程中MySQL默认监听3306端口除非它确实被其他程序占用否则不要乱改。改端口一时爽后续所有客户端连接都要跟着改排查问题也麻烦。若安装时提示3306被占用找出占用进程是正事而不是换个端口逃避。**第二root密码一定要记住最好用一个简单的测试密码。**很多同学在这一步随手设了一串复杂的密码两周后要用的时候就抓瞎了。学习环境的建议是用root账号、设置一个自己一定不会忘的密码比如123456或root这类仅限本地学习环境。生产环境里的密码策略是另一个课题但学习阶段别让密码成为你进入数据库的拦路虎。**第三安装完成后检查服务是否真的启动了。**Windows下按Win R输入services.msc找到MySQL80服务看看状态是不是正在运行启动类型有没有设为自动。MySQL服务没启动Navicat一定连不上这是新手栽跟头最高频的原因放在排查章节我会再详细讲。验证MySQL安装是否成功的经典做法是打开命令行执行mysql --version能输出版本号说明安装没问题。然后执行mysql -u root -p输入密码能进入mysql提示符说明服务端和命令行客户端都能正常工作。到这一步数据库本体就是好的接下来纯粹是怎么用工具连接它的问题。2.2 Navicat版本怎么选免费版还是完整版Navicat家族产品线拉得比较长有专门针对MySQL的Navicat for MySQL也有支持多种数据库的Navicat Premium。新手往往纠结该下哪个我的意见是学习阶段能装哪个就先装哪个别在选型上消耗太多时间。Navicat Premium支持MySQL、MariaDB、PostgreSQL、SQL Server、Oracle等多种数据库一个工具管所有后续不管学什么数据库都能复用。但它的商业授权需要付费订阅官方提供14天全功能试用试用期内没有任何功能阉割拿来走完整个学习流程绰绰有余。好消息是Navicat也推出了免费的Navicat Premium Lite版本虽然功能上做了一些裁剪只支持MySQL和MariaDB但对于学习和日常开发来说完全够用能建连接、能查数据、能写SQL、能导入导出。反正我们这节课的目标就是把MySQL连上、建表、写SQL这些核心功能Lite版一个不少。关于网上各种破解版注册机永久密钥我的建议是不要碰。一方面安全隐患极大破解工具往往捆绑木马而你连接的是本地数据库一旦中招你写的所有学习资料和脚本都可能被窃取另一方面学习阶段用免费版或试用版完全够用别把宝贵的注意力消耗在来回激活的折腾上。老老实实去官网下载认准Navicat Premium Lite或Navicat for MySQL的试用版即可。3. Navicat连接MySQL的完整实操步骤3.1 新建连接之前先想清楚四个参数打开Navicat左上角点连接选择MySQL界面里会弹出一个连接配置窗口。很多同学第一次看到这个窗口就懵了一堆输入框不知道填什么。其实核心只需要关注四个字段其余都可以先不动配置项本机学习环境推荐值说明连接名随便起如本地MySQL或学习库只是这个连接在Navicat里的显示名字纯标识用途主机名或IP地址localhost或127.0.0.1连接本机数据库时两者等价连接别人电脑或云服务器时填对应IP端口3306MySQL默认端口只要安装时没改过就不用动用户名root安装MySQL时创建的超级管理员账号密码安装时设置的root密码填完建议点右侧保存密码避免每次关闭重开都要输入有一个细节值得单独叮嘱主机名这个字段填localhost和填127.0.0.1大多数情况下结果一样但在某些特殊场景下会有区别。localhost可能被解析为使用Unix套接字文件连接而127.0.0.1明确走TCP/IP网络协议连接。如果遇到通过localhost连不上、但127.0.0.1能连上的怪异问题大概率就是套接字文件路径对不上直接把主机名改成127.0.0.1是最省事的解法。这个坑在后面的排查章节还会再次出现。除了这四个基本项连接窗口底部还有一个高级选项卡可以保持默认。诸如编码设置建议选择utf8mb4这关系到后续建表默认字符集现在先不深究后面讲到建库时我会展开。3.2 一步步配置并测试连接参数填完之后千万记得先点窗口右下角的**测试连接**按钮。这一步相当于是Navicat替你去敲一下MySQL服务端的大门看它答不答应。如果弹出连接成功说明通道已经通畅直接点确定保存连接即可如果报错先别慌每个报错都有对应的解决办法而且绝大多数都能自己搞定。测试连接成功之后左侧的导航窗格里就会出现你刚创建的连接名。双击它如果之前勾选了保存密码会直接展开看到该MySQL实例下的所有系统数据库比如information_schema、mysql、performance_schema、sys这四件套。别被这些英文名吓到它们是MySQL自带的系统管理库平时不需要动它们。后续我们要用的是自己新建的业务数据库。有一点想特别提醒连接成功只是第一关。你会发现此刻Navicat窗口里全是系统数据库并没有任何一张你自己建的表。从成功连接到能操作自己的数据中间还差一步——新建数据库、新建表。这一步在下一节详细讲先记住整体路径连接(connection) - 数据库(database) - 表(table) - 数据(row)四层结构。3.3 常用连接设置保存密码与连接池在连接配置对话框里保存密码这个选项看似不起眼实际对使用体验影响巨大。勾选后Navicat会把密码加密保存在本机你每次打开软件、双击连接就能直接进入数据库不用反复输入密码不勾选的话每次重新打开Navicat双击连接都会提示你输入密码。学习阶段建议勾上省事。如果担心安全性可以在Navicat的设置里开启主密码功能给整个工具加一把锁。另外提一下连接池的概念这也是热词里出现频率较高的一个点。Navicat本质上帮我们维护了一个到MySQL的连接池你打开一个连接它不会每次都重新走一遍完整的TCP握手和认证流程而是复用已有连接。这也是为什么Navicat操作起来比命令行流畅的原因之一。理解连接池后你会明白一个常见现象——在Navicat里改了配置或密码有时需要断开连接重连才能生效就是因为旧连接被池化保留了。遇到这类问题右键连接选择关闭连接再重新双击打开即可。4. 连接成功后的第一件事建库建表与增删改查4.1 看到左侧导航树先搞清三层结构连接成功之后很多同学会有短暂的空虚感连进来了然后呢此时左侧的导航窗口里你的连接名下面挂着的是MySQL自带的几个系统数据库。在正式动手之前我强烈建议你先建立起三层结构的心智模型第一层连接。这是Navicat与MySQL服务端建立的一条通道相当于你进入了这台数据库服务器。第二层数据库。一台MySQL服务器上可以创建多个数据库也叫schema彼此独立。相当于服务器里划分出的多个仓库每个仓库存放不同业务的数据。第三层表。一个数据库里可以有多张表每张表有固定的列结构行数据存放在表中。相当于仓库里的货架每排货架放某一类货物。绝大多数初学者混乱的根源是把数据库和表当成同一个东西聊天。比如听到查一下数据库里的用户数据这里实际含义是在某某数据库的users表里查数据。把这三层结构记牢后面的所有操作你都知道自己正身处哪一层不会迷路。4.2 用Navicat新建数据库和表现在动手建自己的第一个业务库。右键点击连接名选择新建数据库。这里需要关注两个选项数据库名起一个语义明确的英文名比如student_db。不要用中文命名数据库兼容性是个隐患。字符集和排序规则强烈建议选择utf8mb4和utf8mb4_0900_ai_ci。utf8mb4是MySQL对UTF-8的完整实现能存储emoji和所有生僻汉字这是今天必须记住的第一个关键选择。_0900_ai_ci表示使用最新校对算法、不区分大小写最符合日常查询习惯。点确定后左侧导航树下就会看到student_db这个库双击它展开下面有表视图函数等子节点。右键表节点选择新建表进入表设计器。表设计器是Navicat的核心功能之一它把建表语句的可视化操作放在一个表格里。新手建表建议先按这个模板练手字段名数据类型其他设置说明idint勾选主键、勾选自动递增每行数据的唯一序号主键必设namevarchar(50)无常见做法姓名用变长字符串长度按实际情况留余量ageint默认值可设0整数不用加引号created_atdatetime默认值设为CURRENT_TIMESTAMP记录创建时间自动填充当前时刻字段设计里有一个经常被问到的问题热词里有mysql设置默认值为0其实就是在表设计器的默认值一列直接填0即可。如果某字段没填默认值且允许NULL那插入数据时这个字段就会是NULL填了默认值0插入时不指定该字段它就自动变成0。默认值是个很实用的设计工具能有效避免业务代码里处理NULL值的麻烦。设计好字段后点CtrlS保存给表起个名字比如students一张表就建成了。你可以双击这张表直接在表数据视图里手动添加几行数据感受一下图形化操作数据和命令行SQL操作数据的差别。4.3 用SQL在Navicat里完成一次增删改查图形界面虽然方便但SQL才是数据库的灵魂课程中也要求我们用SQL窗口实际操作一次。在Navicat的查询窗口按CtrlQ新建查询中输入SQL语句点运行就能在下方结果集窗口看到返回的数据表格。以刚才建的students表为例最基础的四个操作分别是-- 插入数据 INSERT INTO students (name, age, created_at) VALUES (张三, 18, NOW()); -- 查询数据 SELECT id, name, age, created_at FROM students; -- 修改数据 UPDATE students SET age 19 WHERE name 张三; -- 删除数据 DELETE FROM students WHERE name 张三;每条语句执行完Navicat下方会显示受影响的行数这是一个极其实用的反馈。比如UPDATE执行后显示0行受影响说明你的WHERE条件没有匹配到任何记录这时候第一反应不应该是SQL有问题而是这数据到底存不存在。这里有一个新手常踩的坑UPDATE和DELETE语句忘记加WHERE条件。在Navicat里执行DELETE FROM students;MySQL会毫不犹豫地把这张表里的所有数据全部清空不会弹任何二次确认框。课堂上有同学就是这么干把准备的测试数据全删了当场蒙圈。明确一下连接工具越方便破坏性操作也越方便执行前先看一眼WHERE条件永远别在没加WHERE的DELETE和UPDATE上按运行键。5. 连接失败排查与避坑实录5.1 高频报错逐个拆解连接MySQL这件事顺利时点几下就完事但只要有一个环节不对Navicat就会弹出一串报错。下面按课堂上出现频率从高到低把几个典型报错拆开讲明白。报错一2002 - Cant connect to local MySQL server through socket /tmp/mysql.sock这是Linux/Mac环境下最常见的报错。它表示Navicat通过localhost去连接MySQL时尝试走Unix套接字文件但找不到那个文件。原因通常是MySQL服务还没启动或者套接字文件的位置不对。解决办法分两步先确认MySQL服务确实在运行再把连接的主机名从localhost改成127.0.0.1强制按TCP/IP方式连接往往立刻就能解决。顺带说一句如果是在Windows上2002这类报错通常不会出现Windows默认都是走TCP。反之如果在Windows上遇到Cant connect through socket多半是MySQL服务没启动。报错二1045 - Access denied for user rootlocalhost这个报错翻译过来就是用户名或密码不对MySQL拒绝你登录。遇到它别着急先检查输入的密码是不是安装MySQL时设置的那个注意大小写、注意别多打空格。如果确认密码没错还有一种可能是你安装MySQL后改过密码但Navicat里保存的还是旧密码。右键连接选择编辑连接重新输入密码再测试。报错三10061 - Unknown MySQL Server Host / 无法连接到3306端口的MySQL服务器Windows环境下连接本机MySQL时报10061或类似的无法连接错误常见原因是MySQL服务没启动或者端口被防火墙拦截。处理顺序是先检查服务有没有启动再检查3306端口是否在监听。在命令行执行netstat -ano | findstr 3306能看到监听进程PID的话说明端口正常什么都看不到问题就在服务端。报错四Authentication plugin caching_sha2_password cannot be loaded这个报错本质是认证插件版本不兼容。MySQL 8.x默认的认证插件是caching_sha2_password而旧版本的Navicat或旧版数据库驱动只认识老旧的mysql_native_password。如果你的Navicat版本太旧可能不支持新版认证解决办法是升级到新版Navicat或者不折腾数据库端、直接把Navicat升级。相对更稳妥的操作是升级Navicat因为改MySQL的认证插件会影响整体安全性。报错五SSL connection errorNavicat连接时默认会尝试SSL加密通道但MySQL服务端如果没配置SSL证书就会握手失败。这类报错在本地学习环境中简单粗暴的处理方式就是在连接配置里把使用SSL选为禁用或者如果可用不追求全程加密。生产环境另当别论但学习阶段别让SSL成为拦路虎。报错六Access denied for user root不允许的主机如果你用的不是localhost而是填写了局域网IP比如192.168.x.xMySQL会按来源IP去校验用户权限。默认情况下MySQL的root用户只允许从localhost登录局域网里其他电脑用root连过来会被拒绝。解决方法是在MySQL里创建一个允许从指定网段登录的账号并授予权限CREATE USER develop192.168.% IDENTIFIED BY your_password; GRANT ALL PRIVILEGES ON *.* TO develop192.168.%; FLUSH PRIVILEGES;顺带说明这个对局域网访问场景和托管数据库配置管理同样适用。如果是连云服务器上的MySQL除了账号授权之外还要确认云防火墙的安全组规则放行了3306端口这也是一个极容易遗漏的环节。5.2 连接问题排查速查表把上面这些经验浓缩成一张速查表建议截图保存。每次连接失败按表格逐行排查大多数问题都能定位到根源现象可能原因解决动作2002 socket找不到MySQL服务未启动 / 套接字路径不对启动服务或主机名改用127.0.0.11045 Access denied用户名密码错误 / 保存的是旧密码重新核对密码编辑连接重填10061 无法连接服务未启动 / 端口被防火墙拦检查服务状态放行3306端口常见插件报错Navicat版本过旧不支持MySQL 8新认证升级Navicat到新版SSL连接错误服务端无有效SSL配置连接设置里选择禁用SSL或按需连接局域网无法连接root只允许localhost / 云防火墙未放行新建远程账号授权检查安全组规则5.3 我的几点实操心得课堂到了收尾阶段老师让我们自己把连接流程从头到尾再走一遍。几轮操作下来有几个心得值得分享。**第一连接数据库之前先养成三步检查习惯。**一看服务是否启动二看端口是否监听三看账号密码是否正确。这三步里80%的问题都能解决。我在课后帮两个同学排查问题时都发现他们折腾半天报各种错最后回到源头——MySQL服务压根没启动一启动连问题都消失了。工具用多了容易形成思维惯性总觉得是配置复杂其实最基础的环节才最值得先检查。**第二Navicat的连接日志功能能帮你看到真实的错误细节。**连接失败时Navicat的提示框上往往只是简单的一句话但点击详情或者查看连接日志能看到MySQL返回的完整错误码。比如2002和1045这两种错误简版提示看起来都是连不上或被拒绝但错误码一拆出来处理方向就完全不一样了。学会看错误码比记住一堆报错文案有用得多。**第三学习阶段别怕把环境搞坏。**有同学问如果我改了MySQL配置导致服务启动不了怎么办这个问题问得好。其实MySQL服务启动失败大多可以通过卸载重装解决而配置搞坏了大不了还原一份配置文件。学习环境的价值就是用来折腾的每次报错都是一次训练。我在课堂笔记扉页上写的一句话是连接成功是快乐的事但比连接成功更宝贵的是把为什么连不上想明白的过程。**第四把默认字符集统一起来。**建库选utf8mb4Navicat连接设置的编码也选utf8mb4这样后续导入数据、查询中文、甚至存emoji都不会出现乱码。乱码问题排查起来非常痛苦而它唯一的预防手段就是在最开始把字符集这一步做对。别问我怎么知道的——课堂上有人导了一次CSV全场中文全变成问号老师花了一整节课帮我们复盘字符集原理那节课印象太深了。最后分享一个小技巧如果你准备把Navicat作为日常主力工具建议把常用连接的名称规范化命名。比如用项目名-环境-角色的三段式student-system-local-admin一眼就能看出这个连接连的是哪个服务器、什么角色权限。我当时每节课都连同一个本地库连接名起得随意后来课上到一半自己都分不清哪个连接是哪个库了所有连接都指向同一个root用户改密码时每个连接都得逐一更新。命名规范这件事开始不起眼等到连接多了以后能省下大量找连接的时间。
返回列表