很多刚接触 MySQL 的朋友第一次装数据库,最头疼的就是版本看花眼、配置项不认识、装完还连不上。这篇教程就是用 9.1.0 这个当前创新版把整个安装流程从零走一遍。Windows 上怎么选安装包、每一步该点什么、环境变量怎么配、服务怎么启,到命令行怎么验证、常用报错怎么救,都会按保姆级标准拆开讲。不管你是准备做本地开发、跟着课程学数据库,还是搭个小项目练手,照着做基本不会再卡壳。

1. 内容整体设计与思路拆解

1.1 MySQL 9.1.0 是什么版本,为什么要选它

MySQL 9.1.0 属于 Oracle 发布的新版本线里的 Innovation 版本。简单说,MySQL 的版本现在分为两条线:一条叫 Innovation(创新版),比如 9.x,特点是新功能上得快,适合开发环境和想尝鲜的玩家;另一条叫 LTS(长期支持版),目前主推的 8.4.x 系列,稳定性优先,适合生产环境。

很多新手一看 9.1.0 就慌了,担心是不是不稳定。其实对本地开发、学习、搭个人项目来说,9.1.0 反而更合适:它能用到最新的特性,比如改进的查询优化器、更好的 JSON 能力、更完善的复制功能,而且安装过程和 8.x 没太大区别,不会因为你选了个新版本就增加学习成本。这篇教程选择 9.1.0,就是想让想试新东西的人少踩坑。

一句话总结我的选型逻辑:如果你以后要上生产环境,去学 8.4 LTS 版,思路一脉相承;如果你现在就是自己电脑上装着玩、写作业、做毕设、跑个小网站,9.1.0 装就对了。

1.2 安装方案的完整路径规划

很多教程只讲 Windows 上点下一步,但实际工作中你可能会在 Windows 上开发、在 Linux 服务器上部署,两种环境都装上才能把技能点满。这篇教程的路径规划分为两大部分,我先说总思路,后面章节逐步展开:

Windows 桌面端安装,适合本地开发和个人使用,完整覆盖下载、安装、环境变量、初始化、启动、验证。
Linux 服务器端部署,适合把服务端架在云主机或虚拟机上,采用当前主流系统的包管理器方案,操作干净利落。

两套方案都围绕这些核心目标:能正常启动服务、能通过命令行连上数据库、能建库建表插入数据、能配置好开机自启。这套目标达成之后,你就真正拥有了一个能独立使用的 MySQL 9.1.0 环境。

2. 安装前的准备工作与关键决策

2.1 MySQL 9.1.0 官方下载渠道与版本辨识

下载 MySQL 首选肯定是官网,地址是 dev.mysql.com/downloads/mysql/。进入页面后,你会看到一排版本号,什么 9.1.0、8.4.x、8.0.x,最上面一般默认选中最新版,当前就是我们用的 9.1.0。

这里要说几个下载页面的细节。页面下方有操作系统选择,Windows 用户注意选 Microsoft Windows ,Linux 用户根据发行版选 Ubuntu Linux 、 Oracle Linux 这类对应选项。Windows 安装包通常有两种格式,一种是 ZIP 解压版,体积小、需要手动配置;一种是 MSI 安装包,图形界面、点一点就完事。保姆级教程当然选 MSI 安装包,后缀一般是 mysql-installer-community-9.1.0.msi 。

注意:官方下载偶尔会有点慢,网络状况不佳时可以用国内镜像站,比较靠谱的是清华 TUNA 镜像。镜像里能找到对应版本的 .msi 或 .deb/.rpm ,下载校验一下文件大小和官网一致就行。

2.2 Windows 环境安装的必备条件检查

在双击安装包之前,有几个前置条件先确认。

  • 操作系统盘剩余空间要有 1GB 以上,MySQL 本体加组件大约占 500MB 左右。
  • 内存不要太紧张,4GB 内存的机器跑 MySQL 9.1.0 完全够;2GB 的老古董也能跑,但建议把缓冲池调小一点。
  • Windows 系统版本不要太老,Win10 1809 以上或者 Win11 都能完美支持;Win7 就不要想了,9.x 系列需要较新运行库。
  • 安装时需要管理员权限,双击安装包后会弹 UAC 提示,务必点“是”。
  • 如果之前装过 MySQL 5.x / 8.x,建议先把旧服务停掉并卸载干净,否则可能出现端口冲突或数据目录不兼容的情况。这个我在后面章节详细说。

2.3 Linux 环境安装前的系统梳理

如果是 Linux 环境,我的建议是先看一下系统版本再决定安装方式。Ubuntu / Debian 系推荐用 apt ,CentOS / Rocky / Fedora 系推荐用 yum/dnf 。先执行下面的命令得到系统信息:

cat /etc/os-release
lsb_release -a
uname -m

确认系统架构后,到 MySQL 官网选对应系统的 APT 仓库或 YUM 仓库。还有一种更省事的方法:直接用系统自带的软件源安装,但版本可能不是 9.1.0。如果你要求版本必须是 9.1.0,配置官方软件仓库是更干净的路径。

3. Windows 平台 MySQL 9.1.0 安装全过程详解

3.1 MSI 安装向导各步骤逐项解析

下载好的 mysql-installer-community-9.1.0.msi 双击打开,最初的界面会让你选择安装类型,我强烈推荐新手选 Developer Default 。这个选项不仅装 MySQL Server 本体,还会带上 MySQL Shell、MySQL Workbench 等常用配套工具,省得以后要用了又回来补齐。

接着是 Check Requirements 页面,Installer 会检查系统缺哪些运行依赖,最常见的是 Visual C++ Redistributable,如果提示缺失,直接点 Execute 让安装包自动补装,装完回来继续点 Next。

到了 Installation 页面,安装程序开始下载和安装各个组件。这个地方有同学会卡半天,因为下载速度取决于你的网络,别急,耐心等进度条跑完,中间不要关闭窗口,也不要断电。

3.2 安装中关键的配置节点详解

安装完成后,安装向导直接进入 Configuration 阶段。第一个关键选项是 Type and Networking ,这里默认的 Development Computer 就是针对个人开发场景做的预设,MySQL 的服务端口默认 3306,不用改。 TCP/IP 默认勾选,保持选上。

第二个关键点是 Authentication Method 。MySQL 9.1.0 默认使用 Use Strong Password Encryption for Authentication ,选默认即可。这里涉及 8.0 之后默认的 caching_sha2_password 认证插件,新版客户端都能很好支持。有老项目连接报认证错误的话,大概率是客户端太老,后续可以兼容处理。

第三个必须重点关注的就是 Accounts and Roles 。这个页面要求你设置 MySQL root 用户的密码。记住,MySQL 的 root 不是你 Windows 系统管理员,二者没有任何关系。密码建议长度 12 位以上、大小写数字组合,记在小本本上。你也可以在这里新增一个普通用户用于日常连接,但新手先把 root 密码管理好更实际。

第四个配置项是 Windows Service ,建议勾选 Configure MySQL Server as a Windows Service 。开机自启动很方便,服务名称默认 MySQL91 ,启动方式默认 Standard System Account 就行。服务这块建议保持系统默认,不要为了一时方便就改成手动启动,不然下次开机你连不上数据库,反而会怀疑配置出了什么问题。

3.3 应用配置与最终文件布局确认

点击 Execute 后,Installer 会依次执行写配置文件、初始化数据字典、安装服务、启动服务等一系列动作。看到所有勾变绿,界面上显示 Processing 完成,说明配置成功。

安装完成后 MySQL 的程序和数据目录大概长这样:

  • 程序目录默认 C:\Program Files\MySQL\MySQL Server 9.1\
  • 数据目录默认 C:\ProgramData\MySQL\MySQL Server 9.1\Data\
  • 配置文件默认 C:\ProgramData\MySQL\MySQL Server 9.1\my.ini
  • 服务名称一般叫 MySQL91

这里特意提一下 my.ini 的位置,很多人以后想调端口、改字符集,都要去这里改,不是一个安装完就丢在脑后的事情。

4. 环境变量配置与命令行工具链打通

4.1 Windows 环境变量配置的完整流程

安装完成后,如果直接打开 CMD 敲 mysql -uroot -p ,大概率提示 mysql 不是内部或外部命令 。这是因为系统不知道去哪找这个程序,需要手动把 MySQL 的 bin 目录加到系统环境变量。

具体操作路径:右键“此电脑”→“属性”→“高级系统设置”→“环境变量”。在“系统变量”中找 Path ,双击它,点击“新建”,粘贴这个路径:

C:\Program Files\MySQL\MySQL Server 9.1\bin

如果你安装目录不是这个,去 C:\Program Files\MySQL\ 下看一下实际的版本目录名,以实际为准。

填完之后点“确定”保存,然后关闭并重新打开一个新的 CMD 窗口。重点来了: 不重开终端窗口,环境变量是不会生效的 。验证命令:

mysql --version

能输出 mysql Ver 9.1.0 for Win64 on x86_64... 这样的信息,就说明配置成功。这一步做完,命令行工具就算打通了。

4.2 图形化客户端与命令行工具的功能定位

配好环境变量之后,你其实已经有一堆工具可以用了。MySQL Shell 和 MySQL Workbench 在你选择的 Developer Default 安装模式下已经自动装好,从开始菜单搜 MySQL Workbench 直接打开。

我个人的使用习惯是这样的:日常简单查询、建库、建表这种轻量操作直接用命令行,mysql -e 一把梭,效率高,还能练好手;涉及查看表格结构、设计数据模型、做可视化数据导出,打开 MySQL Workbench 更直观,毕竟有图形界面摆在那,对着点总比敲命令稳妥。

如果你以后搞自动化脚本,MySQL Shell 还有一个 Python 模式,可以直接在脚本里操作整个 MySQL InnoDB Cluster 集群生命周期,这属于进阶话题,先不提,但你要知道装 MySQL 9.1.0 就已经把这套能力收进来了。

4.3 CMD 连接验证一条龙

在命令行里执行以下命令,确认能连上数据库:

mysql -uroot -p

输入安装时设置的 root 密码,如果进入 mysql> 提示符,恭喜,整条链路已经打通。顺手把验证 SQL 跑了:

SELECT VERSION();
SHOW DATABASES;

看到 9.1.0 版本的返回结果,数据库实例已经可用了。

5. MySQL 服务管理与常见运维操作

5.1 Windows 服务管理方式详解

MySQL 安装完成后已经注册成 Windows 服务。在开始菜单搜“服务”,或者按 Win + R 输入 services.msc ,找到名字里带 MySQL 的服务,右键就能看到启动、停止、重启选项。

但命令行更高效,管理员权限打开 CMD,可以用这些命令:

net start MySQL91
net stop MySQL91

如果忘记了服务名,用这个命令看全部列表:

sc query | findstr /i mysql

服务启动不了一般的解决思路是:先看错误日志,日志默认写在数据目录下的 .err 文件里,然后根据日志提示去调整 my.ini 。千万不要一启动失败就卸载重装,十次里有八次是小配置问题。

5.2 Linux systemd 服务与自启设置

Linux 上安装完成后,服务也是以 systemd 方式托管。常用命令汇总如下:

sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld

enable 这个动作很关键,是设置开机自启。很多云服务器重启之后 MySQL 起不来,就是因为少了这一步。首次启动后要执行一条安全加固命令,这点和 Windows 不太一样:

sudo mysql_secure_installation

它会引导你设置 root 密码、删除匿名用户、禁止远程 root 登录、删除测试数据库。新手建议全部选是,安全性拉满。

5.3 远程连接权限配置与防火墙放行

别人通过 IP 访问你的 MySQL,需要两件事同时满足:数据库用户允许远程登录,防火墙放行 3306 端口。缺一不可。

数据库用户这一侧,登录 MySQL 执行:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

% 表示允许任意主机,生产环境建议换成固定 IP,安全第一。防火墙侧,Windows 的首次安装默认弹窗会问是否允许端口共享,如果当时点了取消,去防火墙高级设置里手动放行 3306。Linux 上使用 firewalld 的话就执行:

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

注意:启用远程访问前想清楚服务器安全组规则,3306 这个端口不要对全互联网开放,最小化授权是底线。

6. 安装完成后的一线核心验证与字符集问题

6.1 初始化建库、建表、插入数据全验证

服务状态正常,命令行也能进,但数据库真正好不好用,得建个库写条数据测一下。我把这组 SQL 称为安装后的“冒烟测试”。

CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4;
USE testdb;
CREATE TABLE t_user (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(64) NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO t_user (name) VALUES ('zhangsan'), ('lisi');
SELECT * FROM t_user;

如果以上五条语句全部执行成功,那么整个安装链路彻底验证完毕:服务正常、连接正常、建库正常、建表正常、写入查询正常。

这里解释一下为什么建库时要显式指定 DEFAULT CHARACTER SET utf8mb4 。MySQL 9.1.0 的默认字符集其实已经很完善,但显式指定可以避免老项目迁移时碰到 utf8 和 utf8mb4 的兼容差异。 utf8mb4 是完整的 UTF-8 编码,能存中文、表情包、生僻字,任何时候添加建库语句,我建议都把这个写在 SQL 里。

6.2 解决中文乱码的配置技巧

中文乱码几乎每个新手都会遇到。表现是插入中文后,select 出来一堆问号或者乱码,原因通常是字符集不一致。查看当前连接的字符集:

SHOW VARIABLES LIKE 'character_set%';

正常状态下, character_set_server 和 character_set_database 都应该是 utf8mb4 。如果不对,打开 my.ini ,在 [mysqld] 段下加这些配置:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

保存后重启 MySQL 服务。改完服务配置之后,重新建库,别直接用旧的库,新的字符集配置才能完整生效。这又是一个重装无法解决、配置文件一行就能搞定的事。

6.3 端口占用导致的启动失败场景

有时安装或启动 MySQL 时会提示端口被占用。常见元凶是之前装过 MySQL、装过 XAMPP 自带 MariaDB、或者有别的程序监听 3306。排查命令:

netstat -ano | findstr :3306

输出里可以看到 PID,然后去任务管理器定位这个进程。如果确定没用,结束进程或者换端口。换端口就是在 my.ini 中改 port=3307 ,重启服务。注意连接时也要带上新端口号。

7. 常见问题与排查技巧实录

7.1 常见安装与连接问题排查速查表

我整理了一张表,收录平时被问得最多的问题,都是实战中真会遇到的,不是教科书式的应答模式。

问题现象 根本原因 解决操作
安装过程中卡在 Downloading 网络无法连接 MySQL 官网或下载被中断 换镜像源下载 MSI 后重新执行;或挂代理后重试(仅网络层面)
安装结束但服务启动失败 端口被占用或数据目录权限异常 按 6.3 节排查端口;检查 my.ini 路径和日志
命令行提示 mysql 不是内部或外部命令 环境变量未配置或未重开终端 按 4.1 节配置 Path,重开 CMD 再执行
输入密码后报 Access denied for user 'root'@'localhost' 密码错误或旧认证插件冲突 确认安装时密码;若曾改过 root 认证方式,用 --skip-grant-tables 恢复
远程连接报 Host 'x.x.x.x' is not allowed to connect 用户未授权目标主机 执行 GRANT 授权命令并将 localhost 改为 % 或具体 IP
查询中文全是 ??? 字符集配置不是 utf8mb4 按 6.2 节修改并重启,重建库表
3306 被占用 残留 MySQL 或别程序占用 netstat 查看 PID,释放端口或改端口
启动后 Can't connect to MySQL server (10061) 服务未启动或端口不通 net start MySQL91 ;检查防火墙 3306 放行

7.2 严格模式与 SQL 模式带来的隐性问题

MySQL 9.1.0 默认启用了严格 SQL 模式(STRICT_TRANS_TABLES),这会导致某些以前能通过的旧 SQL 语句现在直接报错。最典型的就是向表里插入超长字符串、给非空字段插入空值,或者使用被摒弃的隐式默认值。

遇到这类问题,先检查报错信息中的 SQL 代码和状态码。如果确信是 SQL 本身不规范,去改应用代码,不要图省事关掉严格模式。但如果你在迁移老项目,短期内确实需要放松,可以通过 my.ini 增加配置实现,例如:

sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

删掉 STRICT_TRANS_TABLES 之后重启服务。长期还是建议升级老项目的 SQL 写法,因为未来版本对兼容性的容忍度会更低。

7.3 连接数达到上限,连接被拒

报错信息通常是 Too many connections 。原因有两个方向:一是确实有大量应用在连库,连接池没控制好;二是连接池建立了连接但长时间不释放。查看当前连接状态:

SHOW STATUS LIKE 'Threads_connected';
SHOW VARIABLES LIKE 'max_connections';

临时解决办法是增加连接数上限:

[mysqld]
max_connections=200

但更推荐应用层处理,比如 Java 的 HikariCP、Python 的 SQLAlchemy 连接池,把池子的最大连接数调到合理区间,避免疯狂建连。我见过不少服务器被连挂,就是因为连接池设置得太随意,把 max_connections 调得再大也只是治标不治本。

8. Linux 服务器端(Ubuntu / CentOS)的部署对比

8.1 Ubuntu 上通过 APT 安装 MySQL 9.1.0

Ubuntu 自带软件源的 MySQL 版本偏保守,想装 9.1.0 要配置 MySQL 官方 APT 仓库。用浏览器或 wget 下载官网的 .deb 仓库安装包,然后执行:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb

dpkg 安装时会弹出蓝色界面,问你要选哪个 MySQL 版本。这里选择 MySQL Server & Cluster (Currently selected: 8.0) 这项,回车进去切换到 9.1.0 版本,确定退出。然后更新源并安装:

sudo apt update
sudo apt install mysql-server

系统可能会提示你输入 root 密码或者默认安装后通过 auth_socket 插件认证。如果是后者,用 sudo mysql 就能进,需要改认证方式时再执行:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'YourPassword123';

8.2 CentOS / Rocky 上通过 YUM 安装 MySQL 9.1.0

CentOS 系先装官方 YUM 仓库,然后直接安装:

wget https://dev.mysql.com/get/mysql84-community-release-el7-7.noarch.rpm
sudo rpm -ivh mysql84-community-release-el7-7.noarch.rpm

注意文件里的 mysql84 指的是仓库版本,不代表安装后一定是 8.4。检查可用版本列表:

yum repolist enabled | grep mysql
sudo yum install mysql-server

安装后执行启动和自启配置,再跑安全配置脚本,具体命令在 5.2 节已经列过。CentOS 的 SELinux 有时会限制 MySQL 访问数据目录,遇到奇怪权限错误时可以先用 getenforce 查看状态,确认是否与之相关。

8.3 Windows 与 Linux 安装方案综合对比

对比项 Windows(MSI) Linux(APT/YUM)
上手难度 低,全程图形界面 中,需要一些命令行基础
数据库服务管理 服务面板 / net start systemctl
字符集配置 my.ini my.cnf
常用数据目录 C:/ProgramData /var/lib/mysql
安装后安全脚本 图形界面提示,需手动设置 mysql_secure_installation
适合场景 开发机、学习机、内网工具 云服务器、正式部署

两条路径我都实际跑过,结论很直接:开发主力机用 Windows,部署环境用 Linux,两边都不冲突。如果你以后有跨平台工作需求,Windows 上学会的 SQL、权限概念、服务管理逻辑,在 Linux 上几乎百分之百迁移。

9. 深入剖析安装过程中的原理与底层认知

9.1 为什么 MySQL 9 系列的配置文件叫 my.ini / my.cnf

很多新手会问,为什么改个配置还要找文件,难道不能在安装面板里改?MySQL 在启动时按固定优先级寻找配置文件。Windows 上寻找顺序大致是: C:\Windows\my.ini 、 C:\ProgramData\MySQL\MySQL Server 9.1\my.ini 、安装目录下 my.ini 。Linux 上是 /etc/my.cnf 、 /etc/mysql/my.cnf 等路径。改哪个?改优先级高的。但实际最佳实践是统一改 C:\ProgramData\MySQL\MySQL Server 9.1\my.ini 或 /etc/my.cnf ,其他路径保持干净,否则两个配置文件同时存在,系统参数到底用哪个,新手根本不知道,一通乱猜很容易出问题。

MySQL 提供一条命令查看当前生效配置:

mysqld --verbose --help | findstr /C:"my.ini"   # Windows
mysqld --verbose --help | grep -A1 "Default options"  # Linux

这条命令输出的是实际检索路径,按优先级从高到低排序。掌握了这个机制,以后调参时心里特别清楚自己在改哪一层。

9.2 数据目录初始化的内在逻辑

MSI 安装或 RPM 安装后,第一次启动会看到数据目录自动生成了一堆文件和子目录。不要动它们,这些是 MySQL 的核心数据字典、redo log、undo log 和默认库表。

MySQL 初始化由 mysqld --initialize 这个动作完成。在老版本中经常需要手动执行,新版本安装包帮助你自动完成了。了解这一层有什么用?当你想要自定义数据目录,比如把数据库文件放到另一块数据盘时,就知道要在安装后、启动前完成初始化:

mysqld --initialize-insecure --datadir=/data/mysql

--initialize-insecure 表示生成一个无密码的 root 用户,方便首次登录后马上改密。这个参数组合在运维和容器化部署场景特别常见。理解了这个原理,你以后再看到别人 Docker 安装 MySQL 时挂载数据卷就不觉得玄乎了。

9.3 安装包中各类组件到底负责什么

Developer Default 安装模式会安装一堆组件,很多人嫌占地方想卸载一些,但要知道每个组件对应什么:

  • MySQL Server :核心数据库服务,没有它一切免谈,必装。
  • MySQL Shell :高级命令行客户端,支持 SQL、JavaScript、Python 等模式,新一代可替代传统 mysql 命令。
  • MySQL Workbench :图形化管理工具,正向反向数据库建模、SQL 开发、服务器状态监控都靠它。
  • MySQL Router :主要用于高可用架构的路由转发,本地开发一般用不到,注意它会伴随安装,不占太多资源。
  • MySQL Connectors :编程语言连接驱动,初期不会用到,后面写 Python / Java 项目时记得安装。

新手最初阶段确实只需要 Server 和 Workbench,但 Developer Default 全装上也无妨,因为缺一个驱动以后跑来跑去反而更麻烦。等熟悉了组件功能,再按需卸载也不迟。

10. 我的实操心得与个人建议

10.1 升级大版本前必须完成的备份检查清单

如果你之前用的是 5.7 / 8.0,看到 9.1.0 出来想原地升级,我建议先备份再动手。MySQL 支持多版本跳跃升级,但 5.x → 9.x 这种跨大版本升级,在 8.0 之前的数据字典格式会发生重大改变,不确定性很高。个人经验,最稳妥的方式是:

  1. 用 mysqldump 备份所有业务库数据,并单独备份用户授权信息。
  2. 在新机器或容器中安装 9.1.0。
  3. 把备份导入新库,跑一遍业务测试用例。
  4. 确认无误后再切换流量,旧实例保留一段时间作为回退方案。

命令示例,备份单个库:

mysqldump -uroot -p --single-transaction --routines --triggers app_db > app_db_backup.sql

恢复方式:

mysql -uroot -p app_db < app_db_backup.sql

10.2 密码复杂度和连接安全建议

本地开发时大家普遍随便设密码,但在云服务器或局域网共享环境,root 密码复杂度不达标等于裸奔。MySQL 9.1.0 默认有 validate_password 组件,安装时会建议启用。建议开启,但可以把策略设成 MEDIUM ,要求密码至少 8 位、包含数字大小写,避免强密码规则过于严苛影响效率。

远程连接永远不要用 root 直接连,新建专用账号并授予最小权限。万一泄露,影响面也能降到最低。再有就是配置 SSL 连接,虽然本地开发不是必须,但局域网跨机器传输时,开启后能避免明文密码在链路里跑来跑去。

10.3 用 Docker 跑 MySQL 9.1.0 的额外参考

最后分享一个我近年在个人项目里最常用的玩法:用 Docker 起 MySQL。命令非常简单,五分钟不到就能拉起一个 9.1.0 实例:

docker run --name mysql9 -e MYSQL_ROOT_PASSWORD=root123456 -p 3306:3306 -d mysql:9.1.0

这里的数据默认写在容器匿名卷里,容易丢,我通常建议挂宿主机目录:

docker run --name mysql9 \
  -e MYSQL_ROOT_PASSWORD=root123456 \
  -p 3306:3306 \
  -v /opt/mysql-data:/var/lib/mysql \
  -d mysql:9.1.0

Docker 方式的好处是干净、可快速重来,特别适合折腾新特性。但需要注意容器删除后数据是否保存好,这又回到了 9.2 节讲到的数据目录挂载概念。Docker 安装和物理机安装各有各的适用场景,我的建议是:主开发机用物理 MSI 安装,项目隔离和快速实验用 Docker,两条路都值得掌握。

我个人在实际操作中的体会是:MySQL 的安装过程看着步骤多,真正理解了服务、数据目录、配置文件这三样东西之后,所有安装流程的本质一通百通。9.1.0 本身安装并不比 8.0 复杂,难的是环境差异和旧版本残留导致的干扰。这篇教程里列出的绝大多数坑,都是我见过很多次、也亲手处理过很多次的真实问题。照着步骤走,遇到报错不要慌,回到对应小节查原因,多数情况下问题都在十分钟内解决。装好之后,再用疑问驱动的方式去折腾,比如试试远程连接、试试字符集、试试 Docker 挂载,很快你就能把 MySQL 玩明白。

更多推荐