
1. 环境准备与安装包选择1.1 为什么还要选 MySQL 5.5很多刚入行的朋友可能不理解2025年了MySQL 都出到 8.x 甚至更新版本了为什么实验课还要装 5.5这个版本可是 2010 年发布的“老古董”了。说实话我第一次听到要装 MySQL 5.5 的时候也愣了一下。但真正上手之后才明白实验环境选它是有道理的。MySQL 5.5 是 InnoDB 存储引擎成为默认引擎的标志性版本也是从 5.x 系列迈向现代数据库特性的分水岭。很多高校的数据库原理课程、实验手册甚至一些老系统的维护文档都还基于 5.5 或 5.6 编写。更重要的是5.5 的安装和配置逻辑足够简单清晰没有 8.0 那么多认证插件、初始化参数等额外概念非常适合用来理解数据库安装的本质——拿到一个软件包装好服务配好连接跑通 SQL。如果你的实验报告要求就是 5.5那直接装就行别折腾用 8.0 替代。因为 5.5 的 my.ini 配置项、启动方式、字符集处理逻辑跟 8.0 有不少差异用新版去套旧版实验步骤反而容易踩坑。1.2 安装包去哪下载、怎么确认版本下载 MySQL 5.5 有两个渠道官方归档下载页MySQL 官方把历史版本放在 archive 目录下地址是https://downloads.mysql.com/archives/installer/。这里能选具体版本和操作系统5.5 系列的最终版本是 5.5.62推荐下载这个修复了一些已知问题。第三方镜像或网盘很多高校内部 FTP、镜像站也会有下载速度更快一些但要注意校验文件哈希防止下载到被篡改的安装包。我习惯用官方渠道虽然可能慢一点但放心。这里有个关键点要特别提醒下载时要区分“MSI 安装包”和“ZIP 免安装包”。MSI 安装包图形化向导下一步下一步就完事适合新手和实验场景。ZIP 免安装包解压即用需要手动配置 my.ini、注册服务、设置环境变量适合后续想深入理解 MySQL 目录结构的人。实验环境我建议用 MSI 包省心。但如果你的系统是 Windows 11 或者较新的 Windows 10安装 MSI 版 5.5 时可能会遇到兼容性提示这个我在后面“常见问题”里会专门说。2. 详细安装流程与关键选项解析2.1 安装向导中的那些选项到底选什么双击 MSI 安装包之后第一个界面是欢迎页直接 Next。然后会进入安装类型选择Typical典型安装装到C:\Program Files\MySQL\包含大部分常用组件。Complete完全安装包含所有组件比如调试工具、文档、示例。Custom自定义安装可以自己选安装路径和组件。我强烈建议选 Custom哪怕你不需要改任何组件也要把安装路径改掉。原因很简单不要装到 C 盘 Program Files尤其是含空格的路径。虽然 MySQL 5.5 对路径空格处理得还算好但后面你配置 my.ini、写批处理脚本、用命令行工具时路径有空格会带来各种麻烦。我自己习惯装到D:\MySQL\MySQL5.5或者C:\MySQL\这种简洁路径。接着是选择组件。这里有几个组件说明一下MySQL Server核心数据库服务端必选。MySQL Workbench图形化管理工具5.5 时代对应的版本是 5.2 或 6.x可以勾选也可以后续单独装。MySQL Notifier托盘监控小工具没什么用不选。Connectors各种编程语言的驱动实验用不上不选。组件选完后是路径设置一个 Data 文件夹路径一个是 Server 安装路径。Data 路径建议单独设比如D:\MySQL\Data这样以后重装软件不会丢数据。2.2 实例配置向导端口、字符集、服务名安装文件复制完成后会进入 Instance Configuration实例配置向导这一步是重中之重。第一个选项是 Detailed Configuration详细配置别选 Standard Configuration。Standard 虽然快但很多默认值不符合实验要求后面还要手动改配置文件不如一步到位。然后选服务器类型Developer Machine开发者本机占用内存较小。Server Machine服务器占用内存较多。Dedicated MySQL Server Machine专用数据库服务器占用尽可能多的内存。实验机器配置一般不会太高选 Developer Machine 就行。这里其实影响的是 InnoDB 缓冲池大小、连接数上限等参数选错问题不大后面还能改。接着是 InnoDB 表空间设置默认即可。然后是并发连接数设置选 Decision Support决策支持或 Online Transaction Processing联机事务处理都行实验场景区别不大默认的 OLTP 就行。关键是网络选项这一步Enable TCP/IP Networking勾选启用。Port Number默认 3306。除非端口被占用否则不要改因为实验手册、连接字符串默认都写 3306。下面那个“Open Firewall port for network access”如果系统有弹窗提示建议允许否则局域网其他机器连不上你这台数据库。接着是字符集选择这个我单独拿一节说因为太容易踩坑了。2.3 字符集选择乱码的根源就在这一步MySQL 5.5 的字符集设置界面有这三个选项Standard Character Set默认 latin1 字符集。Best Support For MultilingualismUTF-8 通用字符集。Manual Selected Default Character Set/Collation手动指定。这里直接选第二项UTF-8就可以了吗不行这里恰恰是最大的坑。界面上的 Best Support For Multilingualism 选项实际设的是 UTF-8 字符集但具体的排序规则用的是utf8_general_ci而且这个选项只影响服务端默认字符集并不会自动帮你把所有表的字符集都设为 utf8。很多同学装完之后建表时没写DEFAULT CHARSETutf8表还是默认 latin1一存中文就乱码。我个人的建议是选第三项手动指定然后在 Character Set 下拉框里选utf8Collation 选utf8_general_ci。同时装完之后再手动去 my.ini 里核对把character-set-serverutf8和collation-serverutf8_general_ci这两行确认存在。这样后面建库建表默认字符集就是 utf8中文存储基本不会乱。再往后是 Windows 选项设置Install As Windows Service勾选把 MySQL 注册为系统服务。Service Name默认 MySQL改不改都行但如果你机器上装了多个 MySQL 版本建议改成 MySQL55方便区分。Launch the MySQL Server automatically勾选开机自动启动。最后是安全选项Modify Security Settings设置 root 密码。实验环境建议直接写个简单密码比如 root 或者 123456但你要心里有数这只是实验环境生产环境密码复杂度要求完全不同。Enable root access from remote machines这个不要勾。实验环境 root 只允许本机登录远程访问风险太大后面真需要远程连接时再单独开专用账号。2.4 安装完成的验证配置向导跑完之后最后一步点击 Execute会依次执行这些操作写 my.ini、注册服务、启动服务、设置 root 密码。看到四个勾全绿就说明装好了。然后验证安装是否成功三个方法开始菜单里找到 MySQL 5.5 Command Line Client打开后输入 root 密码能进到mysql提示符就成功。WinR 输入services.msc打开服务管理器找到 MySQL 服务状态是“正在运行”。WinR 输入cmd打开命令提示符执行mysql -uroot -p能进就是成功。3. my.ini 配置深度拆解与优化3.1 my.ini 文件位置和核心配置项不管哪种安装方式MySQL 5.5 装完后都会生成一个 my.ini 配置文件。MSI 安装的情况下位置一般在安装目录下比如C:\Program Files\MySQL\MySQL Server 5.5\my.ini。用记事本就能打开。打开后你会看到里面分了好几个段最核心的是[mysqld]这一段它是服务端的配置。默认内容大概是这样[mysqld] basedirC:/Program Files/MySQL/MySQL Server 5.5/ datadirC:/Program Files/MySQL/MySQL Server 5.5/data/ port3306 character-set-serverutf8 collation-serverutf8_general_ci常见的需要手动调整的配置项port3306监听端口改它必须同时改客户端连接参数一般不动。basedir安装根目录。datadir数据文件存放目录。max_connections100最大连接数实验环境够用。character-set-serverutf8服务端默认字符集。default-storage-engineINNODB默认存储引擎5.5 开始默认就是 InnoDB但显式写出来更明确。skip-grant-tables跳过权限验证仅用于忘记 root 密码时排障正常配置绝对不能出现这一行否则任何人不用密码就能进你的数据库。有一段容易被忽略的是[client]段里面通常有[client] port3306 default-character-setutf8这段配置管的是命令行客户端比如mysql.exe。default-character-setutf8保证你在命令行里输中文、看中文结果都不乱码。如果你发现命令行里 SELECT 出来的中文是乱码检查一下这个配置。3.2 合理调整 InnoDB 缓冲池大小InnoDB 缓冲池是 MySQL 读写数据时的内存缓存区直接关系到查询性能。5.5 版本里对应配置项是innodb_buffer_pool_size。默认情况下 MySQL 5.5 在 Windows 上装完这个值可能只有 8M 到 128M 之间具体取决于你在向导里选的服务器类型。实验环境建议改成 256M 或 512M。innodb_buffer_pool_size256M为什么是 256M因为实验机器一般内存 8G 上下256M 对 MySQL 来说已经是够用的级别同时不会挤占系统其他程序的内存。如果你是 4G 内存的老机器改成 128M 更稳妥。改完配置后必须重启 MySQL 服务才能生效。重启方式后面会说。3.3 修改 my.ini 后的重启方法和注意事项改配置三步走备份原文件把 my.ini 复制一份为 my.ini.bak避免改坏了没法恢复。用记事本编辑保存。注意编码用 ANSI 或 UTF-8 without BOM。如果文件里出现中文字符且保存成 UTF-8 with BOMMySQL 可能启动失败或读取异常。实在不行配置文件里尽量不要写中文注释用拼音或者英文。重启服务。方法一WinR 输入services.msc找到 MySQL 服务右键重启。方法二管理员权限打开 cmd执行net stop mysql net start mysql服务名是你安装时设置的名字如果你当时改了服务名把 mysql 换成对应的名字。重启之后可以登录 mysql 验证一下配置是否生效SHOW VARIABLES LIKE character_set_server; SHOW VARIABLES LIKE innodb_buffer_pool_size;看到输出的值和你设置的一致就说明配置生效了。4. 环境变量配置与命令行工具链4.1 为什么要配环境变量装完之后你发现在 cmd 里直接敲mysql命令会提示“不是内部或外部命令”。因为系统不知道 mysql.exe 在哪。想要在任何目录下都能直接使用 mysql、mysqldump 这些工具就得把 MySQL 的 bin 目录加到系统环境变量 Path 里。具体步骤右键“此电脑” → 属性 → 高级系统设置 → 环境变量。在“系统变量”里找到 Path双击编辑。新建一行填 MySQL 的 bin 目录路径比如C:\Program Files\MySQL\MySQL Server 5.5\bin。确定保存后重新打开一个 cmd 窗口输入mysql -uroot -p测试。4.2 常用命令行工具bin 目录全家桶MySQL 5.5 的 bin 目录下有几个高频工具实验和后续工作中都会用到mysql.exe命令行客户端连接数据库执行 SQL。mysqld.exe服务端程序一般由服务管理器调用不用手动运行。mysqldump.exe逻辑备份工具导出 SQL 文件。mysqladmin.exe管理工具可以 ping 测试、关停服务等。mysql.exe的兄弟姐妹mysqlshow.exe、mysqlcheck.exe查看库表信息和检查修复表。拿 mysqldump 举个例子备份一个库mysqldump -uroot -p mydb d:\backup\mydb.sql恢复mysql -uroot -p mydb d:\backup\mydb.sql这两个命令在实验报告里经常出现提前配好环境变量能省不少事。4.3 命令行连接参数的几个坑使用命令行连接 MySQL 时有几个参数容易弄混-h是 host不写默认是 localhost。-P是端口注意是大写。小写-p是密码。-uroot和-uroot中间不能有空格-uroot是正确的-u root在某些老版本也可以但建议写紧凑格式。-p后面如果想直接带密码也不要有空格比如-p123456但这样密码会暴露在命令行历史里实验环境无所谓生产环境千万别这么干。进入 mysql 之后查看当前版本和连接信息SELECT VERSION(); SELECT CURRENT_USER(); SHOW DATABASES;5. 常见问题与排查技巧实录5.1 安装过程中报错或无法启动现象安装向导最后 Execute 步骤某一步出现红叉或者安装完成后服务无法启动。排查思路首先看错误提示里是否有端口占用。3306 端口被其他程序占了最常见的是之前装过 MySQL 残留服务没卸载干净或者机器上已经有另一个 MySQL 实例在跑。确认方式管理员权限 cmd 执行netstat -ano | findstr 3306看是否有 LISTENING 状态的进程。解决办法要么停掉占用端口的程序要么把新装的 MySQL 改成 3307 端口。如果在安装向导阶段遇到直接改端口重试最简单。再检查 Data 目录权限。如果 Data 目录设置在 Program Files 下Windows 的 UAC 权限控制可能导致 MySQL 无法写数据文件。解决办法把 Data 目录换到非系统盘比如D:\MySQL\Data并确认该目录对当前用户有完全控制权限。检查是否有残留服务。如果你之前卸载 MySQL 不干净服务列表里可能有个旧的 MySQL 服务指向不存在的路径。这时在管理员 cmd 里执行sc delete mysql把旧服务删掉再重新安装。5.2 root 密码遗忘的破解方案出现场景装完了密码忘了或者安装时密码设置失败导致怎么都登不进去。解围步骤停止 MySQL 服务管理员 cmd 执行net stop mysql。以跳过权限表方式启动命令行执行mysqld --skip-grant-tables这个命令会阻塞当前窗口mysqld就在前台跑着不要关它。另开一个 cmd 窗口此时不需要密码直接执行mysql -uroot执行密码重置USE mysql; UPDATE user SET passwordPASSWORD(newpassword) WHERE Userroot; FLUSH PRIVILEGES;回到第一个窗口按 CtrlC 停掉 mysqld然后正常启动 MySQL 服务用新密码登录。这里提醒一句MySQL 5.5 的 user 表密码字段是Password而 5.7 之后改成了authentication_string命令不能混用。网上搜到的解决方案很多是新版本的写法照抄到 5.5 上会报“Unknown column”。这就是老版本的坑之一。5.3 中文乱码的处理原则乱码问题是 5.5 时代最常见的处理核心就是一个原则客户端、服务端、数据库表、连接层四个环节的字符集要一致。具体操作确认服务端字符集SHOW VARIABLES LIKE character_set%;需要关注几个关键变量character_set_server服务端默认字符集应为 utf8。character_set_database当前库的默认字符集。character_set_client客户端传入的字符集。character_set_connection连接层使用的字符集。character_set_results结果集返回时的字符集。如果 client 和 connection 不是 utf8可以在登录后执行SET NAMES utf8;这条命令会同时把上面三个客户端相关变量都设为 utf8。临时解决命令行乱码足够用。建库建表时显式指定字符集CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE TABLE user ( id INT PRIMARY KEY, name VARCHAR(50) ) DEFAULT CHARSETutf8;这样在建表阶段就把字符集锁死了后续存储中文不会乱码。5.4 系统兼容性问题的应对现象Windows 11 或较新的 Windows 10 上双击 MySQL 5.5 的 MSI 安装包没有任何反应或者弹出兼容性提示。原因MySQL 5.5 的 MSI 是基于非常老的 Windows Installer 格式新系统可能不认。应对方案右键安装包 → 属性 → 兼容性 → 以兼容模式运行选 Windows 7 或 Windows XPService Pack 3。如果还不行放弃 MSI改用 ZIP 免安装版。ZIP 版解压后手动配置 my.ini手动注册服务mysqld --install MySQL55 --defaults-fileD:\MySQL\my.ini然后用net start mysql55启动。这条路虽然手动步骤多但兼容性反而更好而且你能把 MySQL 的启动机制理解得更透。5.5 服务启动成功但命令行连不上的情况现象服务管理器里显示 MySQL 正在运行但执行mysql -uroot -p报错ERROR 2003 (HY000): Cant connect to MySQL server on localhost (10061)。10061 是连接被拒绝的意思。常见原因端口不对。检查 my.ini 里port是否 3306或者命令行里-P参数写错。服务启动的不是同一个实例。如果你的机器上有多份 MySQL可能服务指向 A 实例命令行连的却是 B 实例的端口。防火墙拦截。Windows 防火墙可能会拦截 3306 端口的回环连接虽然少见但可以尝试临时关闭防火墙测试。服务实际上处于“已停止”状态只是服务管理器的显示刷新不及时。用net start mysql再试一次。排查顺序建议先netstat -ano | findstr 3306看端口是否有监听再确认服务状态最后检查防火墙。6. 实验完成后的核心总结与扩展方向6.1 本机进一步学习建议装好 MySQL 5.5 只是第一步接下来我建议你把这几个实验做一下巩固对数据库的理解用命令行和可视化工具各建一张学生表插入几条带中文的记录验证字符集设置。用 mysqldump 备份、恢复一个库观察备份文件的内容结构。修改 max_connections 和 innodb_buffer_pool_size重启后查看变量变化。创建新用户授予某个库的增删改查权限用该用户重新连接登录。特别是前面两个基本是数据库日常运维里最常用的操作哪怕以后不用 MySQL 5.5 了这套思维带到其他数据库都一样适用。6.2 从 5.5 迁移到新版本的注意事项如果你后续的课程或工作需要用到 MySQL 5.7 或 8.0有几个差异点提前知道会少踩很多坑默认字符集5.5 默认 latin15.7 默认 utf88.0 默认 utf8mb4。认证插件8.0 默认使用 caching_sha2_password老客户端连不上需要改配置或在创建用户时指定 mysql_native_password。参数命名部分参数改名或废弃比如 5.5 的innodb_additional_mem_pool_size在 5.7 之后被移除。SQL 语法8.0 对 GROUP BY、窗口函数等支持完全不同老 SQL 在新版可能报错。服务账号体系5.5 没有超级管理员之外的系统用户概念差异不大但 8.0 引入了更多安全机制。如果你要把 5.5 的备份恢复到 8.0用 mysqldump 导出的 SQL 文件一般可以但要注意 SQL 文件里的字符集声明、引擎类型等兼容性。6.3 生产环境要不要用 5.5最后说点题外话。如果你只是做实验5.5 完全没问题。但如果以后有人问你生产环境能不能装 5.5我的建议是不要。MySQL 5.5 在 2018 年就已经结束官方支持安全漏洞不再修复。它存在的意义在今天更多是教学、老系统维护、或者研究数据库演进历史。生产环境最小也建议 5.7 起步更推荐 8.0。这不是说 5.5 烂而是技术选型要跟着时代走数据库这种基础软件版本落后意味着安全性和性能都会吃亏。我个人在实际操作中的体会是老版本软件虽然“过时”但恰恰因为它的简单能让人更清楚地看到数据库安装配置的本质。你在 5.5 上理解了 my.ini、服务注册、字符集这些概念到了 8.0 上虽然界面和参数变了但底层逻辑一脉相承上手会快很多。这也是为什么很多课程至今还拿 5.5 当教学工具的原因。最后再分享一个小技巧不管装什么版本的 MySQL装完之后第一件事永远是备份 my.ini 并记录安装路径、数据目录、端口、服务名这四个信息。写进实验报告也好记在本地笔记也好等出了问题再回来翻能省下一大半排查时间。