很多老机器、老项目、还有学校机房,至今还在用 MySQL 5.5。别笑,这东西生命力是真的长。我自己前段时间帮朋友维护一个 2014 年的 ERP 系统,数据库就是 5.5,Windows Server 2008 R2 上跑得好好的,压根不敢乱升版本。所以这篇东西不是教大家追新,纯粹是把 Windows 下 MySQL 5.5 的安装和配置掰开揉碎讲清楚,把当年踩过的坑、试过的错、总结出来的经验一次性写明白。
这篇文章适合谁看?刚接触数据库、需要在 Windows 上搭本地环境的新手,帮公司维护老系统的运维,还有那些被“安装失败”“乱码”“服务起不来”折磨到怀疑人生的同学。我会从版本选择、安装包下载、图形化安装逐步拆解,再到 my.ini 配置、字符集坑点、root 密码忘记怎么救、端口被占用怎么查,最后给一套完整的验证方式。照着走,基本能一次过。
1. 安装前的准备:版本选择与环境检查
1.1 为什么还在用 MySQL 5.5,版本怎么选
先说版本选择。MySQL 5.5 有多个小版本,比如 5.5.20、5.5.28、5.5.62,其中 5.5.62 是 5.5 系列的最后一个版本,2018 年发布的,修复了大量累积的 bug 和安全漏洞。如果你必须用 5.5 系列,就选 5.5.62,别找那些老掉牙的 5.5.20,默认配置和稳定性都有差距。
安装包分两种:一种是 ZIP 压缩包,解压后手动初始化、手动注册服务;另一种是 MSI 图形化安装包,下一步下一步就行。新手优先选 MSI 安装包,省心。但要注意,MySQL 5.5 的 MSI 安装包和现在 8.0 的 MySQL Installer 不一样,它是一个单独的.msi文件,文件名类似mysql-5.5.62-win32.msi或mysql-5.5.62-winx64.msi。32 位和 64 位区分清楚,别下错了。
1.2 安装前必须确认的三件事
第一,操作系统兼容性。MySQL 5.5 官方支持 Windows XP、Vista、7、Server 2003/2008,但在 Windows 10、Windows 11 上也能装,只是有些细节要注意,比如要用管理员身份运行安装包、可能要手动安装 VC++ 2010 运行库。我实测过,Windows 10 专业版 21H2 上装 5.5.62 没问题。
第二,VC++ 2010 运行库。这是我最想提醒新手的。MySQL 5.5 依赖 Microsoft Visual C++ 2010 Redistributable Package,如果系统里没有这个运行库,安装过程中会报错,或者安装完成后服务启动失败,看 Windows 事件日志才发现是缺少 DLL。所以安装前先检查“控制面板-程序和功能”里有没有 Microsoft Visual C++ 2010 x86/x64 Redistributable,没有就先去微软官网下载装上。
第三,端口和目录规划。MySQL 默认端口是 3306,安装前检查一下有没有被占用。打开 CMD 输入下面命令:
netstat -ano | findstr "3306"如果有输出,说明端口被占了,得找到是哪个程序,或者在安装时改成别的端口比如 3307。另外建议规划好安装目录,不要装在带空格的路径下,比如C:\Program Files\MySQL\MySQL Server 5.5这种默认路径虽然能用,但后面改配置文件、写脚本时可能因为路径里的空格出各种奇怪问题。我一般装在D:\mysql\mysql-5.5.62这种纯英文无空格路径下面,省心。
1.3 下载安装包的注意事项
下载时认准官方地址,MySQL 的存档站点是downloads.mysql.com/archives,选择 Product Version 为 5.5.62,Operating System 为 Windows,然后根据系统位数选Windows (x86, 32-bit), MSI Installer或Windows (x86, 64-bit), MSI Installer。
下载的时候要留意文件大小,MSI 安装包一般 30MB 左右,过小或者解压报错的包基本可以判定下载不完整。另外下载完先校验一下哈希值,官方页面有 MD5 或者 SHA1 值,用 PowerShell 算一下确认无误再安装,这一步不能省。
2. 图形化安装全流程拆解(MSI 版)
2.1 安装向导每个界面怎么选
安装包双击运行后,如果弹出 UAC 用户账户控制提示,点击“是”继续。如果没弹,也要确认自己当前登录账户是管理员,否则后面注册服务那步会报 1045 或者 5 的错误。
第一步是 Welcome 界面,直接 Next 进入安装类型选择。这一步有三个选项:Typical(典型安装)、Complete(完全安装)、Custom(自定义安装)。新手选 Typical 就行,所有组件会装到默认位置;想自己控制安装目录和组件的,选 Custom 更合适。
如果选了 Custom,会看到组件列表,主要有这几项:
- MySQL Server:数据库服务本体,必须选
- Client Programs:客户端命令行工具,必须选
- MySQL Documentation:文档,可选,占空间
- Development Components:开发库和头文件,如果要用 Connector/C 开发程序就选,不用可以不选
- MySQL Instance Configuration Wizard:实例配置向导,建议保留
点击 MySQL Server 那行,会有一个“Browse”按钮可以改安装路径。路径尽量不要有中文和空格。
点击 Install 开始安装,整个过程比较快,一般一两分钟。安装完成后默认勾选了 “Launch the MySQL Instance Configuration Wizard”,先取消勾选,因为我们要先改配置文件再初始化,直接进向导会按默认方式初始化,后面改配置可能对不上。
2.2 实例配置向导详解
重新从开始菜单找到 “MySQL Instance Configuration Wizard” 打开,或者在安装目录的bin文件夹下运行MySQLInstanceConfig.exe。
配置向导第一步选配置方式,有 Detailed Configuration(详细配置)和 Standard Configuration(标准配置)两个选项。如果只是本机学习、测试,选 Standard Configuration 会直接把服务安装成 Windows 服务,并设置 root 密码为空,简单粗暴。但我建议选 Detailed Configuration,多花一分钟,每个参数都看清楚,避免后期返工。
选 Standard Configuration 后有个大坑:它默认不勾选 “Modify Security Settings”,root 密码是空的,而且如果不勾选 “Enable root access from remote machines”,登录时可能会遇到 1045 提示。我遇到过一个人装完 MySQL 5.5 后本地用 root 登录报 1045,后来才发现是向导默认 root 密码为空但 root 账号用了 auth_socket 或 skip-grant-tables 相关机制,导致密码验证失败。
所以我的建议是:直接选详细配置,手动把密码设置好。具体步骤如下:
- Developer Machine(开发者机器):表示 MySQL 用于开发测试,占用内存相对较低
- Server Machine(服务器):服务器用途,MySQL 会使用更大内存,留给其他应用的空间变少
- Dedicated MySQL Server Machine(专用数据库服务器):所有内存几乎都给 MySQL,性能最大化
根据实际情况选,个人学习和测试选 Developer Machine,配合 InnoDB 引擎时,它会限制 InnoDB 缓冲池大小在几百兆范围内,不会吃掉整台机器内存。
数据库用途有三个选项:Multifunctional Database(多功能库,InnoDB 和 MyISAM 都支持)、Transactional Database Only(仅事务型,推荐 InnoDB)、Non-Transactional Database Only(非事务型,仅 MyISAM)。5.5 时代很多人默认选 InnoDB,但我这里建议按实际需求选。如果程序要事务、外键、行级锁那些特性,就选第二项;如果是老项目只用 MyISAM 表,选第三项可以少加载 InnoDB 相关资源。
等待 InnoDB 表空间设置那一步,会问 “InnoDB Tablespace Settings”,这个是指定 InnoDB 表空间文件的位置和大小。默认在 MySQL 数据目录下,大小是 10MB 自动扩展。建议直接用默认值,不用改,以后数据量大了 InnoDB 会自动扩展文件。
2.3 关键参数:端口、字符集、服务配置
接下来是并发连接数和网络选项。
第一个选项是 Decision Support(决策支持)/ OLTP(在线事务处理)。5.5 的向导根据用途设置最大连接数,如果选 OLTP,最大连接数会设置得比较高(比如 5000),选决策支持会相对低一些。个人开发机用默认即可,不用纠结。
然后是网络配置,这步很关键。默认勾选 “Enable TCP/IP Networking”,端口是 3306。如果你计划本机开发不远程访问,可以不勾选,TCP 连接就断开了。但大多数场景建议保留,因为很多开发工具比如 Navicat、SQLyog 都是通过 TCP 连接的,只靠 localhost 管道有时候会出问题。
接着是 “SQL Mode” 和字符集设置界面。强烈建议在这里把字符集手动设置为 utf8,而不要用默认的 latin1。MySQL 5.5 的默认字符集是 latin1,如果你建库建表的时候不指定字符集,就会出现中文乱码。向导里下面有 “Character Set” 下拉菜单,选 “Best Support For Multilingualism”,也就是 UTF-8。选完后向导会在 my.ini 里写入 default-character-set=utf8 这样的配置。
然后是 Windows 选项配置。这里要把 MySQL 安装成 Windows 服务,才能通过服务管理器启动和停止。勾选 “Install As Windows Service”,服务名可以改成自己想用的名字,比如 MySQL55,这样以后和其他版本的 MySQL 区分。下面还有一个 “Launch the MySQL Server automatically” 选项,勾上就是开机自动启动,建议勾上,省得每次手动启动服务。如果不勾选,服务还是装了但不会开机自启,需要时手动net start mysql。
如果你这一步忘了勾选自动启动,后面可以用命令补上:
sc config MySQL55 start= auto再往下是安全选项,“Modify Security Settings” 下面填一个 root 密码。注意,千万别把密码设为空就继续。5.5 安装向导里有一个常见状况:密码设置为空,后面程序或工具连接报错,因为没有密码也可能被拒绝(取决于认证插件和端口模式)。密码建议包含字母、数字、特殊符号,长度为 8 位以上。下面还有个 “Create An Anonymous Account” 勾选项,创建匿名账号,这个不要勾,会有安全隐患。
全部配置完成后,点 Execute 执行配置。正常情况下会看到 4 项配置任务依次打勾:
- Prepare configuration
- Write configuration file
- Start service
- Apply security settings
如果哪一步打叉,后面会详细讲排查办法。配置成功后会弹出完成界面,点击 Finish 结束。
3. 配置文件的深入解析与参数调优
3.1 my.ini 文件位置与基本结构
MySQL 5.5 在 Windows 下的配置文件名是my.ini,不在安装根目录,就是数据目录。如果是默认安装,一般在C:\Program Files\MySQL\MySQL Server 5.5\下;如果是用向导配置的,它可能被写在C:\ProgramData\MySQL\MySQL Server 5.5\my.ini(Windows 7 之后 ProgramData 是隐藏目录)。用自定义路径安装的,一般在安装根目录下。
查找方式很简单,在 CMD 里执行:
mysql --help --verbose | findstr "my.ini"会列出 MySQL 按顺序读取的配置文件路径,第一个存在的文件就是当前生效的配置文件。
my.ini 用纯文本存储,里面分成几大块:
[client] port=3306 default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] port=3306 basedir=D:/mysql/mysql-5.5.62 datadir=D:/mysql/mysql-5.5.62/data character-set-server=utf8 collation-server=utf8_general_ci这个例子里的三块分别是客户端配置、MySQL 命令行客户端配置和服务器端配置。新手最容易把字符集配置写错位置,后面集中说。
3.2 最容易被忽略的坑:字符集别只配一半
MySQL 5.5 的中文乱码问题,80% 是字符集配置不完整导致的。服务端字符集是 utf8,但客户端连接的时候用的是 gbk 或其他编码,或者建库建表的时候没指定字符集,都会乱。
服务端字符集设置有两种写法。老版本写法是在[mysqld]段里写:
default-character-set=utf8MySQL 5.5 里这种写法有效。但到了 MySQL 5.6 之后,default-character-set 在 mysqld 段里已经被废弃了,统一用character-set-server。5.5 两种都能用,但为了以后升级方便,建议用 character-set-server 和 collation-server。
另外,[client]段的 default-character-set 影响的是所有客户端程序的默认字符集,包括 mysql 命令行、mysqldump 备份程序。如果不设置,mysqldump 备份出来的 SQL 文件可能没有显式的 SET NAMES 语句,导致恢复到另一个库时中文乱码。所以完整配置至少要有三行:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci然后创建数据库时也主动指定一次,不要偷懒:
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;MySQL 的 utf8 字符集实际上是 utf8mb3 的别名,不支持完整的四字节 Unicode(比如 emoji)。5.5 里虽然有 utf8mb4,但支持不完善,很多 5.5 版本用 utf8mb4 会出问题。所以 5.5 上保证中英文不乱码用 utf8 就够了,emoji 这种超出基础多语言平面的字符建议不要硬塞进 5.5。如果你的业务必须支持 emoji,我会劝你用 5.7 以上版本。
3.3 InnoDB 缓冲池和连接数到底设多大
MySQL 5.5 里 InnoDB 是默认存储引擎,它的缓冲池大小(innodb_buffer_pool_size)直接影响性能。这个参数决定 InnoDB 缓存数据和索引的内存大小,设置太小时会频繁读写磁盘,设置太大又可能和操作系统抢内存。
个人电脑怎么定?我一般这样估算:如果机器内存是 4GB,系统本身占用 1.5GB 左右,那 InnoDB 缓冲池最大也就 1GB,给点余量设 512MB 比较稳妥;如果是 8GB 内存的开发机,可以设 2GB,给其他应用和系统留够空间。参数位于[mysqld]段:
innodb_buffer_pool_size = 512M还要注意 5.5 的 32 位版本有内存限制,单个进程最多用到 2GB 左右,如果用了 32 位版本还往高了设,可能直接启动失败。
另一个常见参数是 max_connections,最大连接数。默认值是 100,对于个人开发来说够用,但如果跑了一些网页应用,比如 PHP-FPM 和 MySQL 在同一台机器上同时跑几百个并发,那就要调高。不过一个连接会占用一部分内存,设置太高内存不够反而拖垮系统。一般开发机用 100 到 200 就够了,服务器按实际并发量调。
日志相关的几个参数也值得看一眼:
log_error = D:/mysql/logs/error.log slow_query_log = 1 slow_query_log_file = D:/mysql/logs/slow.log long_query_time = 2错误日志很重要,MySQL 启动失败时第一件事就是看 error.log,里面会写清楚端口占用、数据库目录权限、存储引擎初始化失败等具体原因。慢查询日志是排查性能问题的利器,long_query_time 设为 2 秒,超过 2 秒的 SQL 会被记录下来。
3.4 配置完成后一定要重启生效
my.ini 修改后不会自动加载,必须重启 MySQL 服务才能生效。重启有两种方式:
第一种,用 Windows 服务管理器。Win+R 输入services.msc,找到 MySQL55 这个服务(名字是你安装时设置的),右键重启。
第二种,命令行方式,管理员 CMD 里执行:
net stop MySQL55 net start MySQL55重启后,检查字符集是否生效:
SHOW VARIABLES LIKE 'character_set%';正常状态应该是:
character_set_client | utf8 character_set_connection | utf8 character_set_database | utf8 character_set_results | utf8 character_set_server | utf8注意,改完 my.ini 不代表旧连接就会自动切换,所有新建的连接才会使用新字符集。如果正在运行的应用程序还保持旧连接,要重启应用程序后重新建连。
4. 环境变量配置与命令行工具使用
4.1 配置 PATH 环境变量
安装完 MySQL 后,为了在任何目录下都能直接敲mysql -u root -p进入命令行,要把 MySQL 的 bin 目录加入系统 PATH 环境变量。
步骤是:右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”,在下方的系统变量里找到 Path 变量,点击编辑,在末尾加分号,然后输入 MySQL 的 bin 目录路径。比如 D 盘安装的就是D:\mysql\mysql-5.5.62\bin。
注意,Windows 10 和 Windows 11 的 Path 编辑界面换成了列表形式,不用加分号,直接“新建”一行然后填入路径就行。
配置完后,重新打开 CMD 窗口,输入:
mysql -V如果能输出 mysql 版本号,说明 PATH 配置成功。如果提示“mysql 不是内部或外部命令”,说明路径没配对,或者 CMD 不是重新打开的,环境变量不会自动刷新。
还有一种不用配置环境变量的做法,直接全路径调用命令:
D:\mysql\mysql-5.5.62\bin\mysql.exe -u root -p开发时每次敲全路径确实麻烦,所以我建议还是配置一下环境变量,一劳永逸。
4.2 通过 CMD 命令行登录与基本验证
配置完环境变量后,登录测试:
mysql -u root -p回车后输入密码,注意密码是看不到回显的,不是键盘没反应,输完直接回车。看到mysql>提示符就说明登录成功了。
然后依次执行下面几个命令,确认安装状态:
SELECT VERSION(); SELECT CURRENT_USER(); SHOW DATABASES;如果版本号输出 5.5.62,说明服务正常。SHOW DATABASES 会列出默认的几个库,包括 information_schema、mysql、performance_schema、test 等,有这些库就说明初始化完成。
4.3 忘记 root 密码的应急处理
忘记 root 密码这事我碰到过太多次了。MySQL 5.5 有一个老但好用的恢复办法。
第一步,停止 MySQL 服务:
net stop MySQL55第二步,用跳过权限表的方式启动 MySQL。在 CMD 里进入 bin 目录,执行:
mysqld --skip-grant-tables --skip-networking这个命令在前台运行,窗口不能关。先不要执行第三步,先把另外一个 CMD 窗口打开。
第三步,在新的 CMD 窗口里无密码登录:
mysql -u root第四步,切换到 mysql 库,修改 root 密码:
USE mysql; UPDATE user SET password=PASSWORD('newpassword') WHERE user='root'; FLUSH PRIVILEGES;5.5 的 user 表里密码字段叫 password,不是 5.7 之后的 authentication_string,版本不同别搞混。
第五步,回到第一个 CMD 窗口,按 Ctrl+C 停掉 skip-grant-tables 模式的 MySQL,然后正常启动服务:
net start MySQL55再用新密码登录验证。注意,跳过权限表模式只用于紧急修复,千万别在正常运行时开着,否则任何人都能无密码进数据库。
5. 安装配置中的高频报错与排查实战
5.1 安装向导执行到 Start Service 就卡住或报错
这种情况非常典型。安装 MySQL 到 Configure 阶段时,其他项都打勾了,唯独启动服务那一步报错,错误提示一般是:
Could not start the service MySQL55. Error: 1067或者:
The service could not be started. The service did not report an error.先看错误日志,日志文件在安装目录的 data 文件夹下,名字是主机名加上.err后缀。用记事本打开,拉到最后几行,看到InnoDB: Operating system error ...或者[ERROR] Can't open the mysql.plugin table,对应处理方案是不同的。
最常见的两个原因是:
第一个,data 目录权限不对。安装时如果用了 Custom 模式并修改了数据目录,Windows 用户没有对该目录的完全控制权限,MySQL 写不了数据文件就会启动失败。解决办法是右击数据目录,选“属性” -> “安全” -> “编辑”,给当前用户(或 NETWORK SERVICE 用户)加完全控制权限。
第二个,3306 端口被占用。用前面说的 netstat 命令确认一下,如果确实被占了,修改 my.ini 里的 port,改成 3307 再启动。或者找到占用端口的程序结束它。
实际环境中我还遇到过一次是防火墙把 MySQL 服务进程拦了。启动服务时提示失败,但看错误日志又没有明显报错,最后关掉 Windows 防火墙后服务秒起。如果你确认目录、端口都没问题,顺手把防火墙或者安全软件对 mysqld.exe 的拦截排除掉。
5.2 登录报 Access denied for user 'root'@'localhost'
登录时遇到这个错误,先确认密码是否真的输对了。如果确实忘了,用上面 4.3 节的办法重置。
还有一种情况是 root 账户的 plugin 字段被误改了,5.5 的 root 用户默认是空字符串,如果你执行过各种网络上的“修复”命令,可能把它改成auth_socket或caching_sha2_password。mysql 客户端不认这个插件就会拒绝登录。登录不进去,只能再次 skip-grant-tables 进去查看:
SELECT user, host, plugin FROM mysql.user WHERE user='root';确认 plugin 是空字符串或 mysql_native_password,否则改回来。
5.3 中文乱码:库表字符集排查
程序写入中文后读出来是???或者 �A,基本都是字符集问题。排查顺序是:
先看服务端全局字符集:
SHOW VARIABLES LIKE 'character_set_database'; SHOW VARIABLES LIKE 'character_set_server';如果显示 latin1,说明 my.ini 里服务端段配置没生效,检查 my.ini 是否改了正确的[mysqld]段、是否重启了服务。
再看当前连接的字符集:
SHOW VARIABLES LIKE 'character_set_connection'; SHOW VARIABLES LIKE 'character_set_results';如果连接字符集不是 utf8,在 MySQL 里执行:
SET NAMES utf8;但注意这只是临时生效,断开连接就还原。要永久生效,得靠[client]段和[mysql]段的 default-character-set=utf8 保证客户端连接时自动带上。
最后看表结构字符集:
SHOW CREATE TABLE your_table;如果表定义里 CHARSET 不是 utf8,说明建表时没指定。5.5 中修改已有表的字符集,可以用:
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;这个命令不仅修改表默认字符集,还会把已有 char/varchar 字段的字符集一起转换,避免重复操作。
5.4 常见报错速查表
| 错误现象 | 可能原因 | 解决方式 |
|---|---|---|
| 安装时 1067 错误,服务无法启动 | data 目录权限不足,或 my.ini 配置错误 | 检查 .err 日志,修复目录权限,核对配置项 |
| 登录报 1045 Access denied | root 密码错误或 plugin 字段异常 | skip-grant-tables 模式重置密码,修复 plugin |
| 中文乱码 | 全局/库/表字符集非 utf8 | 统一设置为 utf8,检查客户端连接字符集 |
| 3306 端口被占用 | 其他程序占用该端口 | netstat 查找 PID,结束进程或改端口 |
| 服务启动失败,日志提示找不到文件 | data 目录路径不对或损坏 | 核对 datadir 路径,必要时备份数据后重新初始化 |
| 执行 SQL 时提示 Unknown collation | 排序规则不匹配 | 指定 utf8_general_ci,或保持与库一致的 collation |
5.5 强制修改 my.ini 后还是没生效的排查思路
有一种情况是 my.ini 被改了,但 MySQL 读的根本不是你改的文件。前面说过用mysql --help --verbose | findstr "my.ini"查看实际读取路径。常见情况是 MySQL 5.5 安装了多个实例,或者之前配置向导生成了多个 my.ini,而服务启动时读的是另一个。解决办法是:删除或重命名多余配置文件,只保留一个,然后重启服务。
另外注意,my.ini 编码建议用 ANSI 或 UTF-8 无 BOM 保存。Windows 自带记事本保存 utf8 时会在文件开头加 BOM 标记,MySQL 解析配置文件时可能把 BOM 当作配置的一部分,导致启动失败或者参数值异常。写完配置后用记事本另存为,编码选 ANSI,最稳。
6. 附:win64 环境下的完整安装演示方案
6.1 安装配置文件模板
我把一套能直接用的 my.ini 配置贴出来,使用的时候根据自身数据的路径来修改路径与缓冲池大小:
[client] port=3306 default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] port=3306 basedir=D:/mysql/mysql-5.5.62 datadir=D:/mysql/mysql-5.5.62/data character-set-server=utf8 collation-server=utf8_general_ci max_connections=100 innodb_buffer_pool_size=512M innodb_log_file_size=48M skip-name-resolve这个模板里我特意加了 skip-name-resolve,作用是跳过 DNS 反向解析。Windows 机器在部分网络环境下,客户端连接进来时 MySQL 会尝试反向解析主机名,如果 DNS 配置有问题,会导致连接慢或者超时。加上这个参数可以加速连接,代价是不能在授权表里使用主机名,只能用 IP 或者 localhost。
6.2 搭建后的完整验证流程
安装配置完成后,不要急着写业务代码,先跑一遍验证流程,确保每个环节都没问题。
第一,用services.msc确认服务状态为“已启动”。
第二,CMD 执行mysql -u root -p,输入密码能进mysql>提示符。
第三,执行:
SHOW DATABASES;看到默认库列表就说明基础没问题。
第四,验证字符集。执行:
SHOW VARIABLES LIKE '%character%';所有 character_set 开头的变量都应该是 utf8 或 utf8_general_ci(character_set_filesystem 是 binary 除外)。
第五,创建一个测试库和测试表,插入中文数据,再查询:
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE testdb; CREATE TABLE user ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO user(name) VALUES('张三'); SELECT * FROM user;如果查询结果是“张三”而不是乱码,恭喜你,字符集链路是通的。
第六,测试应用程序远程连接(如果服务器网络场景适用)。关闭 Windows 防火墙或放行 3306 端口,用 Navicat 或者应用程序配置好连接信息,测试一下远程连接。这里提醒一下,MySQL 5.5 在 5.5.6 之前的版本存在认证插件兼容问题,但 5.5.62 不存在这个问题,可以放心用常规客户端工具连接。
6.3 数据备份的两种推荐方式
装了 MySQL 后,养成备份习惯是必修课。5.5 时代的备份工具是 mysqldump,用法和现在区别不大。
备份单个库:
mysqldump -u root -p --default-character-set=utf8 testdb > testdb_backup.sql恢复:
mysql -u root -p testdb < testdb_backup.sql注意备份文件里要包含建库语句,可以在备份命令里加上--databases参数:
mysqldump -u root -p --databases testdb > testdb_backup.sql这样恢复时不用手动先建库。
如果是老系统、生产环境,我还会在备份命令里加一个--single-transaction参数,这样备份时不会锁表,业务可以正常读写:
mysqldump -u root -p --single-transaction --default-character-set=utf8 --databases testdb > testdb_backup.sql最后提醒一句,备份出来的 SQL 文件用记事本打开时,看到文件头部有类似/*!40101 SET ... */的注释,这是正常现象,不要删。
6.4 后续扩展:从 5.5 迁移到新版本的思路
如果你将来需要从 5.5 升级到 5.7 或 8.0,最稳妥的路径不是直接原地升级,而是逻辑迁移。用 mysqldump 把 5.5 的数据导出成 SQL 文件(注意要加上--default-character-set=utf8参数),然后在目标新版本上建好库表后通过 SQL 文件导入。直接拷贝 5.5 的 data 目录到 8.0 下是不可能启动的,数据字典格式完全不兼容。
迁移的时候最容易翻车的其实就是字符集。8.0 的默认字符集是 utf8mb4,导入 5.5 的 utf8 数据一般没问题,但反过来 8.0 里如果有四字节字符,导出后再导入 5.5 就会报错。所以老系统如果长期停留在 5.5,迁移这件事要专门做字符集梳理和测试,不要想当然一键搞定。
写在最后
这套 Windows 下 MySQL 5.5 的安装配置方法,我前后用了很多年,从 5.5.20 到 5.5.62,从 Windows 7 到 Windows 11,原理性的东西基本没变过。如果你后面在配置过程中遇到什么文档里没写清楚的问题,先去看 data 目录下的 .err 日志,很多所谓“疑难杂症”在日志里都写得很直白。最后再分享一个小技巧:安装完的第一周,没事就手动备份一次数据,顺便把慢查询日志打开,等遇到问题往回翻的时候,你会感谢当时的自己留下了这些记录。