简介《MySQL安装及使用教程》是一份面向数据库初学者和需要快速上手 MySQL 的开发者的入门型文档重点解决从官网下载、安装配置到 Workbench 基本使用的完整入门问题。压缩包内共 1 个 docx 文件约 1.53MB以图文步骤组织便于边看边操作。内容覆盖 MySQL 下载与安装流程、密码和数据库名设置、环境变量检查以及通过 net start/stop 验证服务是否可用同时演示 Workbench 连接数据库、建立库表并给出 select、insert、update、delete 等增删改查语句示例。已有 1456 人学习适合零基础读者按文档搭建本地练习环境、熟悉基础 SQL 操作也可作为课程实验或自学入门时的操作参考。1. 从装不上到连得通MySQL 8.0 在 Windows 上的一小时落地路线刚配好的机器上装 MySQL十个人里有六个人卡在同一个地方Installer 一路 next 走完黑窗口敲mysql -uroot -p却回一句「不是内部或外部命令」。更多人卡在 Workbench 的 Test Connection 转圈明明服务开着就是连不上。这份 MySQL 安装及使用教程要解决的正是这类落地问题——从 Windows 上把 MySQL 数据库装起来到 Workbench 里建库建表再到用 select/insert/update/delete 四条语句完成第一次增删改查整条链路都有对应步骤。它适合两类人一是刚接触关系型数据库、需要在本地跑通一套可用环境的新手二是习惯用图形化工具、但命令行一敲就发怵的从业者。下面按「装包怎么选、服务怎么起、表怎么建、语句怎么写、坑怎么避」的顺序往下推。2. 下载与安装MySQL Installer 的组件取舍与安装参数2.1 Community 版与离线安装包的选择逻辑下载页面上摆着好几个入口第一次进去很容易点错。正确路径是先点顶部菜单的「Community」再进入「MySQL on Windows」然后在产品列表里选中「MySQL Installer」。这里有个分岔页面会同时给出 Web 版和完整版两个安装包Web 版体积小装的过程中再联网拉各个组件完整版体积大组件都打包在里面。教程里明确让拉到页面最底部选第二个实际就是让用体积大的那个离线包。选它的理由很实际。Web 版在安装阶段会逐个下载 Server、Workbench、Connector、示例库等组件网络一抖就弹出下载失败虽然可以跳过但跳过的可能正好是后面要用的 Workbench。离线包把这一步提前做完了安装过程只需要本地解压和配置失败点少一大截。如果你所在的环境网络时好时坏别省这点下载时间。点进下载页后页面会要求登录或注册账号这里直接找页面下方的「No thanks, just start my download」链接即可不必真的注册。下载下来的文件名形如mysql-installer-community-8.0.xx.msi双击运行前先确认磁盘剩余空间完整安装加上数据目录留出 2GB 以上比较稳。2.2 安装向导里的三个关键决策点安装过程大部分是 execute、next 的节奏但有三处必须自己拿主意选错了后面要返工。第一处是安装类型。向导会给出 Developer Default、Server only、Client only、Full、Custom 几个选项。默认的 Developer Default 会把 Server、Workbench、Shell、Router、Connector 和示例库一起装上对学习和日常开发来说够用但它对磁盘和已装组件的检查比较严机器上如果存在旧版 Visual C 运行库或残留的 MySQL 服务会在 Check Requirements 这一步红着脸拦下来。遇到拦路不要硬点 next按提示点 Execute 让它补装依赖补不上的自己去装对应的运行库再重来。第二处是认证方式。Product Configuration 阶段会问用哪种密码加密插件第一个是强加密caching_sha2_password第二个是兼容旧版客户端的方式。教程默认走第一个。如果你的调用方是 Navicat、旧版 JDBC 驱动或者某些语言的旧连接库选第一个很可能连不上并报「Authentication plugin cannot be loaded」这种场景下选第二个更省事如果全程用官方 Workbench 和命令行第一个没问题。第三处是服务名和端口。向导默认把 Windows 服务名设成MySQL80端口 3306并勾选开机自启。这三个默认值不要随意改后面所有命令、连接配置、教程截图都基于它们。真要改端口比如本机已经有一个 3306 的服务记住新端口并在后续所有连接里同步改掉否则会出现「服务起来了但连不上」的假象。配置阶段还会要求设置 root 账号密码这是整台机器上权限最高的账号设一个自己记得住、又不少于 8 位、含大小写和符号的密码。旁边可能有「Add User」的入口初学阶段可以跳过先用 root 把流程跑通。2.3 环境变量、服务启停与安装验证安装向导完成后多数情况下会把C:\Program Files\MySQL\MySQL Server 8.0\bin写进系统 PATH但不是每次都成功尤其是中途取消过、或者装完手动移动过目录的情况。验证办法很简单新开一个命令行窗口必须是新开的老窗口读的是旧环境变量敲mysql --version。mysql --version这条命令只做一件事让系统在 PATH 里找mysql.exe并打印版本。能打印出mysql Ver 8.0.xx for Win64 on x86_64就说明 PATH 没问题如果提示「不是内部或外部命令」往下走手动配置。手动配置的路径是此电脑右键 → 属性 → 高级系统设置 → 环境变量在「系统变量」里找到 Path编辑新增一行C:\Program Files\MySQL\MySQL Server 8.0\bin一路确定。改完同样要重开命令行窗口才生效。这里有个小细节如果安装时改过安装路径这个 bin 目录要换成实际的路径直接复制教程里的默认路径反而会引入一个新的错误。服务启停需要管理员权限。以管理员身份打开命令行执行net start mysql80 net stop mysql80mysql80是安装时设定的服务名不是数据库名也不是实例名。这一点经常被误解net start后面跟的是 Windows 服务标识写错了会提示「服务名无效」。查当前机器上到底注册了哪些 MySQL 服务用sc query type service state all | findstr /i mysql输出里SERVICE_NAME后面那串就是真实服务名可能是MySQL80、MySQL或者安装时自定义的名字。确认服务处于 RUNNING 状态再回到命令行执行mysql -uroot -p输入密码后出现mysql提示符安装这一段就算真正走完了。提示net start报「发生系统错误 5拒绝访问」九成是没开管理员权限不是服务坏了。3. Workbench 建库建表从连接配置到第一张 student 表3.1 连接配置里四个字段的含义Workbench 打开后首页是一个 Connections 列表点加号新建连接。弹窗里字段不多但每个都有实际含义。Connection Name 是给你自己看的别名随便起只影响列表显示。Hostname 填127.0.0.1或localhost前者走 TCP后者在某些环境下会优先走命名管道排查问题时用 IP 更可控。Port 默认 3306要和安装时设定的一致。Username 填rootPassword 点 Store in Vault 存起来省得每次输。填完先点「Test Connection」。这一步是在真正保存前做一次握手成功会弹出一个绿色的提示框。如果这里就失败了不要急着点 OK 保存先看错误码1045 是用户名或密码错2003 是服务没起或端口不对2059 是认证插件不匹配。把错误码记下来对着排查比反复重装有效得多。测试通过再点 OK然后双击列表里的连接进入操作界面。3.2 建库、建表与字段类型进入 Workbench 主界面后左侧 Schemas 面板是空的或者只有几个系统库。工具栏上有一个创建 schema 的按钮图标是一个带加号的数据库点开输入库名比如教程里的db_2字符集建议选utf8mb4排序规则跟着选utf8mb4_0900_ai_ci点 Apply 后会弹出一段 SQL 预览再点一次 Apply 才真正执行。字符集这一步不要图省事用默认值。MySQL 8.0 的默认字符集已经是 utf8mb4但从旧版本升级上来或者手工改过配置的机器默认值可能是 latin1后面往里写中文就会变成问号。建库时显式指定比事后改表省事得多。等效的 SQL 是CREATE DATABASE db_2 DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_0900_ai_ci;建完库在 Schemas 面板里展开db_2右键 Tables 选 Create Table。图形化建表界面里逐列填列名、类型、是否允许 NULL、主键、默认值、注释。以教程里的 student 为例字段设计如下列名类型约束说明idstudentINTPRIMARY KEY, NOT NULL学号唯一标识nameVARCHAR(20)NOT NULL姓名20 字符足够ageTINYINT UNSIGNEDNULL年龄0255 够用addrVARCHAR(64)NULL地址留空也允许对应的建表语句CREATE TABLE student ( idstudent INT NOT NULL, name VARCHAR(20) NOT NULL, age TINYINT UNSIGNED DEFAULT NULL, addr VARCHAR(64) DEFAULT NULL, PRIMARY KEY (idstudent) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;类型选择上有几个容易踩的点。学号用 INT 还是 VARCHAR取决于有没有前导零和字母有的话必须用 VARCHAR否则007会变成7。年龄用 TINYINT UNSIGNED 而不是 INT省空间也顺带把负数挡在门外。姓名用 VARCHAR 而不是 CHAR避免定长补空格带来的比较问题。存储引擎保持 InnoDB它支持事务和行锁也是 8.0 的默认值。3.3 用 Select Rows 录入数据与批量插入表建好后右键student表选「Select Rows - Limit 1000」Workbench 会打开一个结果网格下方直接可以编辑单元格。填几行数据点右下角的 Apply会弹出对应的 INSERT 语句预览确认无误再 Apply 一次。这种方式适合一次性录入少量手工数据字段多的时候容易点错列。批量场景更推荐直接写 SQL。教程里的那行插入是典型写法但原文里用的是中文引号直接粘进命令行会报语法错误必须换成英文单引号INSERT INTO student (idstudent, name, age, addr) VALUES (3, 王五, 21, 王家村);这里有几个参数值得说明。列名列表和 VALUES 列表必须一一对应顺序不能乱字符串用单引号数字不加引号如果省略列名列表就必须给每一列都提供值包括允许 NULL 的列实际项目中几乎不会这么写。一次插多行时用逗号把多组 VALUES 连起来比循环执行单条 INSERT 快一个数量级INSERT INTO student (idstudent, name, age, addr) VALUES (4, 赵六, 22, 李家湾), (5, 孙七, 20, 陈家沟);执行完刷新结果网格能看到新行就说明写入成功。如果报Duplicate entry 3 for key PRIMARY是主键冲突换一个学号或者先删掉旧行。4. SQL 增删改查四条语句的写法与边界4.1 select 的列裁剪与条件过滤教程里的第一条语句是Select * from student;把整张表所有列所有行拉出来。学习阶段这么写没问题但表一大就会拖慢界面也不利于看清结构。更稳的写法是显式列出需要的列并加上 LIMITSELECT idstudent, name, age, addr FROM student WHERE age 20 ORDER BY idstudent LIMIT 100;这条语句的执行顺序是 FROM 定位表 → WHERE 过滤行 → SELECT 取列 → ORDER BY 排序 → LIMIT 截断。理解这个顺序有实际价值WHERE 里不能用 SELECT 阶段才起的别名而 ORDER BY 可以。SELECT *在宽表上会把大字段TEXT、BLOB一起读出来网络和内存都吃亏生产代码里基本被禁止。条件过滤还有几个常见写法WHERE name LIKE 王%做前缀匹配能用上索引WHERE age BETWEEN 20 AND 22是闭区间WHERE addr IS NULL判断空值注意不能写成 NULL那永远返回空结果。4.2 insert 的列名对齐与自增主键insert 的完整语法是INSERT INTO 表名(列名1,列名2,...) VALUES (值1,值2,...)教程里给的形式没问题。真正容易出错的地方在类型和约束的匹配上字符串列传数字、非空列传 NULL、超长字符串被截断都会报错或被静默改写。如果主键设成AUTO_INCREMENT插入时可以跳过这一列让数据库自己生成ALTER TABLE student MODIFY idstudent INT NOT NULL AUTO_INCREMENT; INSERT INTO student (name, age, addr) VALUES (周八, 23, 刘家堡); SELECT LAST_INSERT_ID();LAST_INSERT_ID()返回本次连接上一条 INSERT 生成的自增值同一连接内有效跨连接调用拿到的是别人的值。这个细节在批量导入并发场景下经常被忽略导致拿错主键。还有一种写法是INSERT ... ON DUPLICATE KEY UPDATE主键冲突时改为更新适合做幂等的初始化脚本INSERT INTO student (idstudent, name, age, addr) VALUES (3, 王五, 21, 王家村) ON DUPLICATE KEY UPDATE age VALUES(age), addr VALUES(addr);4.3 update 与 delete 的 where 条件和后悔药教程给的 update 语法包含了 LOW_PRIORITY、IGNORE、ORDER BY、LIMIT 等可选子句日常用得最多的是最简形式UPDATE student SET age 19 WHERE idstudent 3;这里有个原教程里的隐藏坑示例写的是where id3但表里的主键列名是idstudent照抄会报Unknown column id in where clause。写 update 前先DESC student;看一眼列名能省掉这类低级错误。delete 同理DELETE FROM student WHERE idstudent 3;update 和 delete 最危险的场景是漏写 WHERE一条语句清空整张表。命令行里有个不算后悔药但能保命的习惯先把 WHERE 条件写成 SELECT 跑一遍确认命中的行数和内容对得上再把 SELECT 换成 UPDATE 或 DELETE。Workbench 默认开启安全更新模式没有 WHERE 的 UPDATE/DELETE 会被拦下来报 1175 错误这个限制建议保留别为了省事关掉。-- 先确认影响范围 SELECT * FROM student WHERE age 18; -- 确认无误后再改 UPDATE student SET addr 待核实 WHERE age 18;事务是另一层保护。InnoDB 下执行START TRANSACTION;后做修改确认没问题再COMMIT;发现问题ROLLBACK;即可回退。这套流程在命令行里尤其值得养成因为图形化界面误点 Apply 的代价比敲错一行命令高得多。5. 避坑排查安装与 CRUD 路上的五类翻车5.1 现象命令行提示 mysql 不是内部或外部命令原因安装向导没有把 bin 目录写进 PATH或者写进去了但当前命令行窗口是安装前打开的读的还是旧环境变量。也有一种情况是安装路径被改过而 PATH 里写的还是默认路径。解决先重开一个命令行窗口再试。仍然不行就去环境变量里检查 Path确认存在C:\Program Files\MySQL\MySQL Server 8.0\bin这一条路径与实际安装目录一致。改完必须重启命令行IDEA、VS Code 这类已开的终端也一样要重启它们会缓存环境变量。5.2 现象net start mysql80 报服务名无效原因安装时服务名不是默认的 MySQL80或者安装中途勾掉了「Configure MySQL Server as a Windows Service」服务压根没注册。解决用sc query type service state all | findstr /i mysql列出所有含 mysql 的服务名以实际输出为准。如果一条都没有说明服务没装重新运行 Installer 走一遍 Product Configuration或者用mysqld --install MySQL80 --defaults-fileC:\ProgramData\MySQL\MySQL Server 8.0\my.ini手动注册注册完再 start。5.3 现象Workbench Test Connection 卡住或报 2003原因服务没启动、端口被占用、防火墙拦截或者 my.ini 里 bind-address 绑到了别的地址。2003 是「Cant connect to MySQL server」本质是 TCP 层没通。解决先net start mysql80确认服务在跑再查端口占用netstat -ano | findstr :3306有输出且 PID 不是 mysqld说明端口被别的程序占了改 MySQL 端口或者停掉占用方。端口没监听则去看C:\ProgramData\MySQL\MySQL Server 8.0\my.ini里的port和bind-address改完重启服务。5.4 现象连接报 2059提示认证插件无法加载原因MySQL 8.0 默认用 caching_sha2_password部分旧版客户端、旧 JDBC 驱动、旧语言的连接库不认这个插件。解决优先升级客户端驱动。实在升不了就把账号改成兼容插件ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的新密码; FLUSH PRIVILEGES;改完用新密码重连。这一步影响的是认证方式不涉及权限变更但密码会重置别忘了同步更新所有存了旧密码的连接配置。5.5 现象中文写进去变成问号或者插入报 Incorrect string value原因库、表、列三级字符集不一致或者客户端连接字符集不是 utf8mb4。InnoDB 的行格式和字段长度也可能让 utf8mb4 的索引超长。解决先查现状SHOW VARIABLES LIKE character_set%;看各级设置SHOW CREATE TABLE student;看表的字符集。统一改成 utf8mb4ALTER DATABASE db_2 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; ALTER TABLE student CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;连接串里也要带上characterEncodingutf8Workbench 的连接设置里同样有字符集选项。改完重新插一条中文验证别只看配置不回写数据。6. 进阶把手工 CRUD 收进可重复执行的脚本在 Workbench 里点出来的库和表换台机器就得重来一遍。把建库、建表、初始化数据写成.sql文件用命令行一次性灌进去才是能复现的做法。我习惯在项目根目录放一个init.sqlDROP DATABASE IF EXISTS db_2; CREATE DATABASE db_2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; USE db_2; CREATE TABLE student ( idstudent INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age TINYINT UNSIGNED DEFAULT NULL, addr VARCHAR(64) DEFAULT NULL, PRIMARY KEY (idstudent), KEY idx_name (name) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; INSERT INTO student (name, age, addr) VALUES (王五, 21, 王家村), (赵六, 22, 李家湾), (孙七, 20, 陈家沟);执行方式是不进交互界面直接把文件喂给客户端mysql -uroot -p --default-character-setutf8mb4 init.sql--default-character-set不能省Windows 控制台默认编码和 utf8mb4 不一致时中文会在导入阶段就损坏后面怎么查都是乱码。执行完用mysql -uroot -p -e SELECT COUNT(*) FROM db_2.student;验证行数比进 Workbench 点开表看快。配套的还有备份和恢复。mysqldump导出结构和数据source或重定向导入mysqldump -uroot -p --databases db_2 --single-transaction db_2_backup.sql mysql -uroot -p db_2_backup.sql--single-transaction让 InnoDB 在一致快照下导出不锁表适合还在被读写的库。数据量小时差别不明显表上百万行时这个参数就是能不能在业务时段做备份的分水岭。查询性能这块EXPLAIN是最便宜的诊断工具。同样一条 select加上 EXPLAIN 看 type 列ALL是全表扫ref是走了非唯一索引const是主键或唯一索引命中。看到 ALL 就该考虑加索引或者改写 WHERE 条件。索引不是越多越好每个索引都会拖慢写入idx_name这种单列索引只在该列频繁出现在 WHERE 或 ORDER BY 里才值得加。操作图形化方式命令行方式适用场景建库建表Workbench 界面点击执行 init.sql需要复现、多人协作数据导入导入向导mysql file.sql批量、可脚本化备份Data Exportmysqldump定时任务、CI性能诊断Visual ExplainEXPLAIN快速定位慢查询血泪经验是凡是手动点出来的环境第二次搭一定会有出入。从那以后我每次交付带数据库的项目都强制走一遍init.sqlmysqldump的双向验证——先导入、再导出、再导入一次两次结果一致才算这套脚本能用。这个习惯帮我挡掉过好几次「本地好好的、换台机器就报错」的尴尬。希望帮到你。本文还有配套的精品资源点击获取