先说个现象:我在几个技术交流群里,隔三差五就会看到有人发“MySQL 装好了但连不上”“初始化报错 1045”“Linux 下 service mysql start 起不来”这类问题。细聊下去,十有八九不是 MySQL 本身多难搞,而是卡在安装方式选错、配置改错文件、或者压根没搞清楚两个系统在路径和初始化逻辑上的差异。Windows 和 Linux 的安装配置,看似都是“解压—初始化—启动—改密码”四步走,但中间那几步的细节完全不是一回事。这篇东西就来把两条路子分别捋清楚,照着做能少绕很多弯子。
这篇攻略适合刚接触数据库的开发者、从 Windows 跳到 Linux 服务器做部署的同学,也适合那些装是装上了,但配置文件、字符集、远程访问逻辑一团浆糊的人看。内容以 MySQL 8.0 为主线,因为 5.7 在 2023 年 10 月已经停止官方更新(EOL),新项目再学 5.7 没有意义,生产环境的存量项目另说。
1. 安装前的两条路线选择:版本与安装方式
1.1 MySQL 版本怎么定
MySQL 的版本现在拉开得比较开了。8.0 是绝对的主流,无论 Windows 还是 Linux,新装直接上 8.0 的稳定版本就行。8.4 是 LTS 长期支持版,适合需要长期维护、不想频繁大版本升级的生产环境。5.7 就不要考虑了,它虽然存量很大,但官方停止维护之后,安全更新和 bug 修复都没有了,新环境再用它属于给自己埋雷。
选版本时还要留意一个认证插件的变化。MySQL 8.0 默认的认证插件是 caching_sha2_password,而 5.7 及更早版本用的是 mysql_native_password。这会影响两件事:
- 用老版本客户端(比如 5.x 的驱动、旧版 Navicat)连接 8.0 时,可能会报
Authentication plugin 'caching_sha2_password' cannot be loaded。 - 写程序时的连接驱动版本要跟上,Java 的 Connector/J 8.0+、PHP 的 mysqli 扩展、Python 的 pymysql 都建议用对应的新版。
如果实在遇到老客户端连不上,可以在 MySQL 里给用户换回旧插件:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
但这只是过渡方案,长期还是建议升级客户端。
1.2 Windows 下 MSI 安装包和 ZIP 解压版怎么选
Windows 装 MySQL 有两条主路:官方 MSI 安装包,或者 ZIP 免安装压缩包。
MSI 的优势是图形界面,勾选组件、自动配置服务、初始化实例都替你做了,适合电脑上已经装了 MySQL Workbench 这种配套工具、不想碰命令行的用户。缺点是黑盒,装完你往往不知道配置在哪,出了问题也难定位。
ZIP 解压版则是什么都自己来:自己写 my.ini、自己初始化数据目录、自己注册 Windows 服务。我第一次用 ZIP 版时,光是 init 失败就折腾了大半天,但搞清楚之后对整个 MySQL 的运行逻辑通透很多,后面排查任何问题心里都有底。所以我更推荐有一定命令行基础的人走 ZIP 路线。MSI 装完容易出一些“目录权限导致服务起不来”“配置文件改了不生效”的幺蛾子,反而不如 ZIP 版干净。
提示:无论选哪条路,安装目录尽量不要放在带空格的路径下(比如
C:\Program Files\mysql虽然能用但有些脚本会出问题),更不要放在中文路径里。放在D:\mysql-8.0.x-winx64这类纯英文路径,后续少很多麻烦。
1.3 Linux 下用系统自带还是官方 YUM/APT 仓库
Linux 下常见三种装法:
- 用发行版自带软件源直接装(
yum install mysql-server或apt install mysql-server) - 配 MySQL 官方 YUM/APT 仓库后安装
- 下载通用 Linux 二进制包手动解压配置
很多人图省事选第一种,但发行版自带的所谓 mysql-server,在 CentOS/RHEL 上其实是 MariaDB,不是 MySQL。虽然命令兼容,但行为细节有差异,照着 MySQL 文档配置容易踩坑。Ubuntu/Debian 的 mysql-server 是真正的 MySQL,但版本往往落后,除非你刻意锁定版本,否则不建议在生产环境用。
我自己习惯的做法是:一台新服务器上装 MySQL,先配官方 YUM/APT 仓库,然后用包管理器安装。这样版本可控、升级方便,安装路径和配置文件位置也统一,出问题时查文档好查,问人也好问,大家说的路径都是同一套。
通用二进制包方式适合有特殊要求的场景(比如指定安装路径、无 root 权限的隔离环境),日常使用不建议,配置量太大,回报不高。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Windows 下 ZIP 解压版安装:从下载到服务启动
2.1 下载、解压、目录准备
去 MySQL 官方下载页(dev.mysql.com/downloads/mysql/)选择 Windows (x86, 64-bit), ZIP Archive 版本下载。注意选文件体积较大的那个 ZIP,不要选带 debug 字样的。解压后建议把目录名简化掉版本号,比如 D:\mysql-8.0.42-winx64 改成 D:\mysql,这样后面写配置、跑命令都清爽。
解压后的目录里默认是没有 data 目录的(有些压缩包解压出来带个空的 data,也建议删掉让初始化自己生成)。 my.ini 也不存在,需要自己新建。
目录准备好之后,我习惯先建一个 data 空目录,也可以不建,初始化命令会自动创建。但新建一个能避免权限检查时出现意外。
2.2 手写 my.ini 的几个必配项
在 MySQL 根目录下新建 my.ini,这是 Windows 版的核心配置。我第一次装的时候直接抄网上乱找的配置,结果把 basedir 写成了反斜杠 \ 结尾,初始化的时候各种路径错乱。正确的写法是用正斜杠:
ini复制[mysqld]
# 端口,默认 3306,如被占用可改 3307
port=3306
# 安装根目录
basedir=D:/mysql
# 数据目录
datadir=D:/mysql/data
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 允许最大连接数
max_connections=200
# 默认存储引擎
default-storage-engine=INNODB
[client]
default-character-set=utf8mb4
`[
