news 2026/10/2 8:59:10

MySQL安装到增删改查全教程:环境配置、Workbench操作与SQL实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL安装到增删改查全教程:环境配置、Workbench操作与SQL实践

简介:面向MySQL零基础学员的安装与使用教程,覆盖数据库环境搭建与基础操作的全流程,特别适合初次接触关系型数据库、需要完成课程实验或本地开发环境部署的读者。教程从官网下载官方安装向导讲起,针对安装过程中的密码设置、组件下载失败等常见情况给出实操提示,并指导用户检查或手动配置环境变量,同时列出服务启动、停止等常用管理命令。进入使用环节,文档以图形化管理工具为操作入口,逐步演示新建连接、创建数据库与数据表、录入数据等关键步骤;再结合命令行补充查询、插入、修改、删除四种核心SQL语句的典型用法,例如按条件修改记录、删除指定数据。全册仅1个docx文件,大小约1.53MB,图文步骤集中,便于对照练习。命令示例贴近实际任务,读者可举一反三迁移到其他表结构;目前已有1452人学习浏览,适合数据库入门者按图索骥,快速建立起MySQL环境并独立完成增删改查。

1. MySQL 安装与使用教程:从下载到增删改查的一条完整链路

很多初学者拿到 MySQL 相关资源后的第一个动作,是卡在官网一堆下载入口里不知道怎么选,要么装完打开 Workbench 发现连接不上、中文乱码,折腾到半夜还停在建库这一步,连一条查询都没跑通。这份 MySQL 安装及使用教程好在把「下载、安装、配环境变量、用 Workbench 建库建表、在命令行做增删改查」串成了一条可以照着走的完整链路,环境以 MySQL 8.0 系为准,服务名、路径、SQL 语法全部对齐同一套环境。适合第一次装数据库的学生和转行从业者,也适合培训讲师拿来做课堂环境模板;已经装过的人可以跳过前半部分,重点看第四章的语法边界和第五章的排查。

2. 下载与安装:安装包选型、服务名与环境变量一次说清

2.1 下载前先分清两种安装包:Web Installer 与离线 MSI

教程第一步是进入官网下载页,走Community → MySQL on Windows → MySQL Installer这条路径。页面拉到最底端的时候,通常能看到两个安装包:上面一个体积很小,叫 Web Installer,安装时会在线拉取组件,网络稍微不稳就容易卡在某个组件上下载不下来;下面一个是完整的 Community 离线 MSI 包,教程明确建议选第二个,这类包体积大一些,但本地装完之后不依赖后续网络拉取。对大多数实训环境来说,选完整的离线包更省心,教室里几十台机器同时装的时候尤其明显。

点击第二个安装包之后会进入下载页面,这里大概率会跳出一个 Oracle 账号登录框。很多第一次下载的人就在这里被劝退,其实不需要注册,页面底部通常有一行小字「No thanks, just start my download」,点它就能直接下载。这个细节教程里没写,但实际下载时十有八九会遇到,建议第一次下载的人直接记住这个入口。

选择安装包时还有一个小技巧:看文件名区分类型。带web字样的是在线安装器,不带的一般是完整包;另外mysql-installer-community-8.0.x.msi这种命名方式说明是 8.0 系列,和教程后续提到的MySQL Server 8.0目录是对应的。版本不用追新,稳定可用优先,8.0 系列目前的生态和文档都最齐全,踩坑时也容易搜到答案。

2.2 安装流程:Execute、Next 与「装包失败可以不用管」的真实边界

下载好的安装包直接双击运行,进入安装界面后,整个流程确实像教程说的那样基本都是Execute、Next。但有几个节点值得停下来细看:

组件选择界面会列出 MySQL Server、MySQL Workbench、MySQL Shell、Connectors 等一堆组件。如果按默认的 Developer Default 走,会一起装 Workbench,这正是教程第三部分要用到的图形化工具。如果只需要最简环境,选 Server only 也行,后续命令行的增删改查全部能用,但就少了图形化建库建表的体验。教程后面用了 Workbench,建议这里直接选 Developer Default,省得回头补装。

安装过程中,如果某些组件下载失败,确实可以不用管,但这句话有一个边界:失败的必须是 Documentation、Samples and Examples 这类非核心组件,它们不影响 Server 和 Workbench 的使用,装不上就装不上。MySQL Server 核心服务如果下载失败,安装流程会直接回滚或卡住,这种情况必须回头 Retry,不能跳过继续。

接下来是配置环节,这里要设置 root 用户的密码。教程里有一句「这里需要输入数据库的名称」,这句话其实是个误解——安装阶段不会让你输入数据库名,只有一个 Windows 服务名,默认是MySQL80。教程后面用net start mysql80启动服务,用的是这个服务名,不是数据库名。这两个概念混在一起,是很多初学者后面理解错乱的第一个来源,建议从一开始就分清:服务名管服务启停,数据库名是你后续自己创建的库。

端口默认 3306,没有特殊需求不要改。认证方式按默认推荐走即可,8.0 默认使用caching_sha2_password认证插件,这对新装环境没问题,但旧客户端连不上这个坑,我在第五章专门讲。

2.3 环境变量与服务启动:装完先做一次端到端验证

教程说安装完成后环境变量一般会自动配好,这个在 Windows 下通常是成立的,但不排除个别机器没配上。检查方法是:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在Path里找有没有C:\Program Files\MySQL\MySQL Server 8.0\bin这一项,没有就手动加。

配好环境变量后,用管理员身份打开命令提示符,做一轮端到端验证:

net start mysql80 mysql --version mysql -uroot -p

第一条命令启动 Windows 服务,mysql80是安装时生成的服务名,具体名称可以在services.msc里确认;第二条命令验证环境变量是否生效,能打印出版本号说明 PATH 配置成功;第三条命令用 root 登录,会提示输入密码,输入安装时设置的那个密码即可。能进到mysql>提示符,安装这一步才算真正走完。

一个容易忽略的点:net start启动服务必须用管理员权限的命令提示符,普通权限会直接报「拒绝访问」。另外mysql -uroot -p中-u和用户名之间可以不留空格,-p后面不要直接带密码,让它交互式输入更安全,直接在-p后面写密码会出现在命令行历史记录里,不推荐。

3. Workbench 建库建表与数据录入:图形化先把模型跑通

3.1 新建连接:先密码后连接名,顺序不要乱

打开 Workbench,首页中间有一个加号图标,点击新建连接。教程特别强调了一个顺序:先输入用户名和密码,再输入连接名。实际界面上三个框是并排的,但按这个顺序填不容易漏,因为连接名可以随便起,密码漏了,Test Connection必失败。

连接参数对照表如下:

参数示例值说明
Connection Namelocalhost_test自定义名称,只用于识别,可随意
Hostname127.0.0.1本机连接,保持默认
Port3306与安装时保持一致
Usernameroot安装时设置的用户名
Password安装时设置的密码点击Store in Keychain可以保存

填完后点Test Connection,这一步实际做的是 TCP 握手和认证校验,几分钟前刚启动的 MySQL 服务如果没起来,会在这里直接报 2003 错误。测试通过后点 OK,连接会出现在 Workbench 首页。教程原图里那个db_2其实是连接名,它和后面说的database_2不是同一个东西——连接名只是一个入口标识,数据库名要通过 SQL 或图形界面去建,两者不要在脑子里混成同一个概念。

3.2 建库建表与录入数据:Apply、Confirm、Select Rows 三步走

进入 Workbench 操作界面后,点击工具栏的建库图标,输入数据库名,点 Apply 执行。Workbench 会先弹出一条 SQL 预览,内容大致是CREATE SCHEMA db_2,这就是它替你生成的建库语句,点 Confirm 再点 Finish 就建好了。

建表操作:右键Tables→Create Table...,图形化设计器里可以逐个添加字段。教程示例表student有四个字段,对应关系建议这样设计:

字段名类型说明
idstudentINT学生编号,建议设为主键
nameVARCHAR(45)姓名,字符串类型
ageINT年龄,整数类型
addrVARCHAR(100)地址,字符串类型

其中idstudent强烈建议勾选PK主键。原因很实际:后续的UPDATE和DELETE都需要通过主键来精确定位行。原教程的删改操作全部围绕id=3这条记录展开,如果没有主键,定位起来只能靠其他字段碰运气,遇到重复数据就会误伤。这也是初学者最容易忽略的一个点:建表时多花十秒设主键,后面编程时少花一小时排查。

字段设计好后点 Apply,和建库流程一样,确认 SQL 再执行。然后右键刚才创建的student表,选择Select Rows - Limit 1000,会打开一个网格视图,这里可以直接输入数据。教程里的「在表格输入内容,点击 Apply」指的就是在这个网格里填入一行数据,然后点 Apply 提交。

注意:Workbench 的网格视图是内存里的临时编辑状态,不点 Apply 不会真正写进数据库,直接关窗口数据就丢了。新手在这里最容易翻车——填了半天,点了关闭,还说「数据去哪了」。另外如果填入了重复的主键值,Apply 时会直接报主键冲突,这是正常的保护机制,改成不重复的编号即可。

4. 命令行增删改查:四条 SQL 的语法、顺序与边界

4.1 进入命令行与查看现有库表

打开命令行,输入mysql -uroot -p回车,输入密码后进入 MySQL 交互终端。先按教程走一遍查看操作:

SHOW DATABASES; USE database_2; SHOW TABLES; SELECT * FROM student;

SHOW DATABASES列出所有库,能看到刚才用 Workbench 建的库;USE database_2切换当前数据库,后续操作都在这张库下执行;SHOW TABLES列出库下所有表,确认student在;SELECT * FROM student查全表数据,星号表示所有列。这四条命令是后续所有数据库操作的地基,建议先在自己电脑上把这一串完整跑一遍,看到输出再往后走。USE这步最容易忘,不在任何数据库下直接执行SELECT,会报No database selected。

4.2 查询与插入:字段顺序必须和值顺序一一对应

查询是最常用的操作,先看基础语法,再逐步加条件:

SELECT idstudent, name, age, addr FROM student; SELECT * FROM student WHERE age >= 18 ORDER BY age DESC LIMIT 100;

第一条只查指定列,比*更精确;第二条加了三层过滤:WHERE限定年龄大于等于 18,ORDER BY age DESC按年龄倒序排,LIMIT 100限制最多返回 100 行。实际使用中,ORDER BY和LIMIT组合能有效避免一次性拉出几十万行把客户端卡死,排查数据时可以先LIMIT再看,再逐步放大范围。

插入语句按原教程的模板来:

INSERT INTO student(idstudent, name, age, addr) VALUES (3, '王五', 21, '王家村');

SQL 语法中,表名后的括号是列清单,VALUES括号里的值必须与列清单一一对应,位置不能换。这里有两个高发错误:一是字符串没加引号,中文和英文名字都属于字符串,必须用单引号包起来,数字和日期不加;二是从 Word 或网页复制的 SQL 里,单引号很容易被编辑器替换成全角弯引号,执行时会直接报语法错误,报错位置往往就在名字附近。原教程示例里的'王五'在排版时显示成了弯引号,手工敲一遍直引号就好。

不写列清单直接INSERT INTO student VALUES (3, '王五', 21, '王家村')也能执行,但强烈建议不要养成这个习惯。一旦表结构调整,比如新增了一个字段,不带列名的插入就会错位甚至报错,排查半天才发现是列的锅。

4.3 修改与删除:WHERE 是安全底线,先查后改

修改语句语法源于原教程的完整模板:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]

实际执行时,LOW_PRIORITY和IGNORE绝大多数场景用不到,LOW_PRIORITY是让更新排队、减少对读操作的干扰;IGNORE是忽略更新过程中的冲突错误。核心是SET和WHERE:

UPDATE student SET age = 19, addr = '新地址' WHERE id = 3;

SET表示要把哪些列改成什么值,多个字段用逗号分隔;WHERE限定只改哪一行。最容易翻车的操作就是忘记写WHERE——一旦漏掉,UPDATE会更新全表所有行,表里有几百个人,年龄就全变成 19 了。这是数据库操作中最典型的血泪教训。

我个人的习惯是一个强制流程:执行UPDATE或DELETE之前,先把WHERE条件原封不动地放到SELECT里跑一遍,只查不改,确认返回的行数正好是目标行数,再复制回来执行修改。比如先跑SELECT * FROM student WHERE id = 3,看到返回 1 行,再执行UPDATE ... WHERE id = 3,心里就有底了。

删除语句对应的是:

DELETE FROM student WHERE idstudent = 3;

注意DELETE后面不写*,直接DELETE FROM表名加条件。原教程的示例连起来看,其实是完整的数据生命周期演示:先插入id=3的记录,再把它age改为 19,最后删除id=3。这个流程走完,表里就没有id=3这条记录了,这是正常现象,不是你操作错了。把这四个语句连起来跑通,增删改查的闭环也就完整了。

5. 常见问题排查:安装、连接、字符集三类高频翻车

5.1 安装与连接类:环境变量、服务未启动与密码遗忘

现象:在命令行输入mysql --version,提示「mysql 不是内部或外部命令」。

原因:环境变量里的bin路径没配上,或者配置完之后命令行窗口没有重新打开,当前会话还拿着旧的 PATH 列表。

解决:先确认C:\Program Files\MySQL\MySQL Server 8.0\bin是否真的存在,存在就把这个路径追加到Path,保存后重新开一个命令行窗口。如果不想重启窗口,也可以直接用绝对路径C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql --version验证,能出版本号就说明程序本身没问题。补充一句:安装路径如果改过,以实际路径为准,不要照抄教程的C盘路径。

现象:Workbench 点Test Connection报2003错误,或者命令行登录报ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'。

原因:MySQL 服务根本没启动。Windows 下服务停了,命令行连不上本地实例;Linux 下这条报错通常也是服务未启动或 socket 文件路径不对,但最基础的原因九成是服务没起来。

解决:管理员权限命令行执行net start mysql80,启动成功后重新测试连接。Linux 环境则用systemctl start mysqld或service mysql start,启动后确认监听端口ss -lntp | grep 3306。这一条始终排在排查顺序第一位——先确认服务活着,再去研究密码和权限,方向不能反。

现象:安装时设置的 root 密码忘了,输入多少次都提示Access denied for user 'root'@'localhost'。

原因:密码本身设置后没有被妥善记录,MySQL 8.0 的认证又默认走加密插件,没法直接查密文回推明文。

解决:标准做法是走跳过权限表的方式恢复。先停掉服务,然后手动以--skip-grant-tables模式启动,此时可以免密登录,再修改 root 密码,最后正常重启服务。步骤按顺序执行:

net stop mysql80 mysqld --skip-grant-tables --shared-memory

新开一个命令行窗口执行mysql -uroot免密登录,然后执行密码重置:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES;

密码改完后把--skip-grant-tables模式关掉,重启mysql80服务。注意这条路径只适合本机测试环境,生产服务器上操作前必须评估业务影响,更不能带着--skip-grant-tables长期运行。

5.2 数据与兼容性类:中文乱码与旧客户端认证失败

现象:通过命令行插入中文数据,查询结果全是???或者乱码。

原因:建库时没有指定字符集,或者连接会话的字符集和服务端不一致。MySQL 5.7 之后推荐使用utf8mb4,它能完整存中文和 emoji,而老旧的utf8(实际是utf8mb3)只支持部分字符。

解决:建库时显式指定字符集,这是最根治的方式:

CREATE DATABASE db_2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

已有库和表可以执行ALTER DATABASE ... CHARACTER SET utf8mb4和ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4升级。此外每次连接后执行SET NAMES utf8mb4,确保客户端发给服务端的字符集声明一致。排查时可以执行SHOW VARIABLES LIKE 'character_set%',看character_set_server和character_set_client是否都是utf8mb4。字符集问题十有八九是玄学,本质就是「建库时没指定 + 连接时没声明」两头都没堵住。

现象:用旧版 Navicat 或旧版 JDBC 驱动连接 8.0 实例,报Unable to load authentication plugin 'caching_sha2_password',部分场景还会伴随 SSL 连接错误。

原因:MySQL 8.0 默认认证插件换成了caching_sha2_password,而 2019 年之前发布的客户端工具和驱动很多不认识这个插件,双方握手机制对不上。

解决:优先升级客户端工具和 JDBC 驱动到支持 8.0 的版本,驱动版本一般mysql-connector-java 8.0.x就没问题,连接串里按需加useSSL=false或对应的sslmode参数。如果环境里客户端升级不了,才考虑把用户的认证插件改回mysql_native_password:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;

这个操作等于把账号降级到旧认证方式,有兼容性代价,作为兜底方案用。默认安装的新环境里不建议主动改,首选一定是升级客户端。

6. 把 Workbench 操作沉淀成 SQL 脚本:备份恢复的最小习惯

6.1 让 MySQL 替你生成建表语句

图形化界面里把表建好了,回头想复现环境时,不一定记得住每一步点了什么。好在 MySQL 能直接把已有表结构反向导出成 SQL:

SHOW CREATE TABLE student;

这条命令会输出完整的建表语句,包含字段类型、主键、字符集等全部信息。在 Workbench 里还有更方便的入口:右键表名,选择Copy to Clipboard里的Create Statement,就能把这条语句复制出来,存成一个.sql文件。我习惯建一个schema.sql,把 Workbench 里点出来的表和测试数据固化在里面,再配合版本管理,后续环境重建只需要执行这一份脚本即可。

6.2 备份与恢复的最小命令集

备份用mysqldump,恢复用mysql,两个是配套的最小组合:

mysqldump -uroot -p --single-transaction --default-character-set=utf8mb4 db_2 > backup.sql mysql -uroot -p db_2 < backup.sql

第一条命令的--single-transaction参数很关键,它让备份基于事务快照,避免备份过程中阻塞正在执行的写入;--default-character-set=utf8mb4和前面讲的字符集问题呼应,防止备份文件里中文字符被转码。恢复时,先确保db_2库存在,不存在就先执行CREATE DATABASE db_2,否则导入会报库不存在的错误。恢复命令用的是标准输入重定向,把.sql文件内容喂给mysql客户端执行,整份脚本里的建表和插入语句会按顺序跑完。

从那以后,我每次装完 MySQL 都会强制走一遍最小验证链路:net start启动服务,命令行登录,建一个临时库,插入一条中文数据,再查回来,最后跑一次mysqldump。全部通过才认为安装收尾,这一套走下来能把前面那些坑在十分钟内全部暴露干净,总比用的时候再发现问题强。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 8:58:58

Spring Boot+Vue在线问卷调查系统:表结构、接口与联调实战

简介&#xff1a;基于SpringBoot与Vue的在线问卷调查系统&#xff0c;是一套面向计算机专业毕设学生及Java学习者的完整项目方案&#xff0c;可作为课程设计、期末大作业或毕业设计直接使用。系统围绕问卷全生命周期设计&#xff0c;涵盖用户登录认证、问卷创建与编辑、题目配置…

作者头像 李华
网站建设 2026/10/2 8:58:42

Excel考核表自动化:模板+公式+宏一键生成月度报表

你是不是也这样&#xff1a;每个月月底&#xff0c;领导一句“把考核表发我”&#xff0c;你就得从人员名单、上个月的绩效数据、指标权重、评分、排名一路弄到汇总&#xff0c;少说也得折腾大半天。往上一翻&#xff0c;上个月的表格还躺在“桌面-最终版-真的最终版”这样的文…

作者头像 李华
网站建设 2026/10/2 8:57:35

脑电ERD/ERS全解析:从同步化机制到运动想象脑机接口应用

在脑电&#xff08;EEG&#xff09;分析这个圈子里&#xff0c;事件相关同步化&#xff08;ERS&#xff09;和事件相关去同步化&#xff08;ERD&#xff09;&#xff0c;听起来像是教科书里才有的概念&#xff0c;但它几乎每天都会出现在运动想象脑机接口、认知负荷评估、甚至是…

作者头像 李华
网站建设 2026/10/2 8:57:14

O(logn)的本质是问题空间收缩,不是速度标签

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 8:56:32

codex 安装配置与实战避坑指南:从环境准备到高效编码

1. 从“装完就吃灰”说起&#xff1a;codex 到底适合谁我大概是从去年下半年开始把 codex 当成主力工具来用的&#xff0c;中间经历过装不上、连不通、模型报错、配置被忽略、登录卡死、沙盒起不来这一整套流程。身边不少朋友看我天天在用&#xff0c;也去下了个安装包&#xf…

作者头像 李华
网站建设 2026/10/2 8:56:18

Session+Redis共享方案:解决多节点用户登录状态丢失

你有没有这种经历&#xff1a;项目上线头一天一切正常&#xff0c;第二天加班到凌晨两点才回去——原因是用户明明登录了&#xff0c;一刷新就跳回登录页。这个场景十有八九和多节点部署有关。你装了负载均衡&#xff0c;Nginx把请求轮询到三台服务器&#xff0c;用户的登录状态…

作者头像 李华