简介:面向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 Name | localhost_test | 自定义名称,只用于识别,可随意 |
| Hostname | 127.0.0.1 | 本机连接,保持默认 |
| Port | 3306 | 与安装时保持一致 |
| Username | root | 安装时设置的用户名 |
| 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有四个字段,对应关系建议这样设计:
| 字段名 | 类型 | 说明 |
|---|---|---|
| idstudent | INT | 学生编号,建议设为主键 |
| name | VARCHAR(45) | 姓名,字符串类型 |
| age | INT | 年龄,整数类型 |
| addr | VARCHAR(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。全部通过才认为安装收尾,这一套走下来能把前面那些坑在十分钟内全部暴露干净,总比用的时候再发现问题强。希望帮到你。
本文还有配套的精品资源,点击获取