MySQL 8.4 安装与课程数据库验收手册

首次使用:W03-D02。W10-D02 只复用和复检,不重复安装。
课程基线:MySQL 8.4 LTS、InnoDB、utf8mb4、人民币金额 DECIMAL(10,2)。具体 patch 以上课前 G0 为准。
官方依据:Windows 安装说明、安装包选择。

1. 先检查,不重复安装

在 PowerShell 中执行:

Get-Service -Name 'MySQL*' -ErrorAction SilentlyContinue
where.exe mysql
mysql --version
Get-NetTCPConnection -State Listen -LocalPort 3306 -ErrorAction SilentlyContinue

判断时分四层:安装包存在、Windows 服务存在、3306 端口监听、本人账号能连接。前一层通过不能代替后一层。

如果服务和客户端都可用,直接进入第 3 节;如果命令找不到或服务不存在,进入第 2 节。

2. 用官方 MSI 安装 MySQL 8.4

  1. 打开 MySQL 官方 Windows 下载页,选择 MySQL 8.4 LTS 的 Windows x86 64-bit MSI。MySQL 8.4 Windows 版只提供 64 位,不要下载第三方“绿色整合包”。
  2. 运行 MSI。使用 MySQL Configurator 完成服务配置;仅复制 Server 文件而不配置服务,还不能开始课堂实验。
  3. 课堂电脑选择适合开发机的配置,启用 TCP/IP,保留课程端口 3306。端口已被占用时先查清进程,不随意改成未知端口。
  4. 认证方式使用当前官方推荐选项。为 root 设置由学生本人保管的密码,不投屏、不写进课件、Git、日志或截图。
  5. 将 MySQL 配置为 Windows 服务并启动。记录真实服务名;不同安装器可能显示 MySQL84 或其他名称,不在脚本里盲猜。
  6. 若选择安装 MySQL Client/Workbench,仍以命令行连接和 SQL 结果作为课程验收;Workbench 的绿色图标不能代替真实 SQL。
  7. 安装完成后彻底退出并重开 TRAE,再执行第 1 节四项检查。

3. 创建课程数据库和最小权限账号

先由学生本人连接本机 MySQL:

mysql -u root -p

终端提示密码时再输入;不要把密码写在命令行参数里。连接后执行:

CREATE DATABASE IF NOT EXISTS commerce_w03
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_0900_ai_ci;
 
CREATE USER IF NOT EXISTS 'commerce_app'@'localhost'
  IDENTIFIED BY '由学生本人设置的课程专用强密码';
 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX
ON commerce_w03.* TO 'commerce_app'@'localhost';
 
FLUSH PRIVILEGES;

不要把示例占位文字原样当密码。root 用于安装和管理,课堂应用使用 commerce_app;这不是完整生产权限设计,但比所有代码都用 root 更接近工程边界。

4. 验证数据库基线

使用 commerce_app 重新连接,执行:

SELECT VERSION();
SELECT @@default_storage_engine;
SELECT @@character_set_server;
SELECT @@transaction_isolation;
SELECT CURRENT_USER();

通过标准:

  • 版本属于课程冻结的 8.4 LTS;
  • 默认引擎是 InnoDB;
  • 服务端字符集是 utf8mb4;
  • 当前用户是课程应用账号;
  • 能在 commerce_w03 中创建、写入、回滚并查询教学表。

5. 安装 Python Driver 与 ORM

MySQL Server 是系统软件;SQLAlchemy、PyMySQL 是当前项目 .venv 中的 Python 依赖。进入 W03 项目、确认解释器属于 .venv,再使用项目提供的 D02 依赖文件:

python -c "import sys; print(sys.executable)"
python -m pip install -r requirements-d02.txt
python -m pip check
python -c "import sqlalchemy, pymysql; print(sqlalchemy.__version__, pymysql.__version__)"

若项目实际把 D02 依赖合并在 requirements.txt,以仓库冻结清单为准,不在系统 Python 里逐个安装。

连接串通过环境变量提供。学生自己设置密码,不把真实值写入 Git:

$env:COMMERCE_DATABASE_URL = 'mysql+pymysql://commerce_app:本人密码@127.0.0.1:3306/commerce_w03?charset=utf8mb4'

截图时遮挡密码;.env.example 只能保留占位符。

6. 常见故障

现象先检查处理与复验
mysql 找不到where.exe mysql、是否重开终端确认 Client 已安装和 PATH 生效;不要反复重装 Server
服务未运行Get-Service -Name 'MySQL*'启动真实服务名,再查 3306 和连接
1045 Access denied用户、host、密码、授权用管理账号检查 CURRENT_USER() 与 GRANT;不要把密码发群里
2003 Can’t connect服务、端口、host、防火墙先本机 127.0.0.1:3306 复验,不盲目关闭防火墙
中文乱码server/database/table/connection charset逐层查 utf8mb4,不要靠手工改输出掩盖
Python 导入失败sys.executable 与 pip 路径回到项目 .venv 安装冻结依赖
测试能跑但真实库失败Fake/Fixture 与真实 MySQL 混淆保留真实错误;Learning Gate(课堂学习验收要求) 可继续,MySQL Evidence 保持 Pending

7. 提交证据

Windows 服务名:
MySQL 版本:
mysql.exe 路径:
端口:
CURRENT_USER(不含密码):
默认引擎:
字符集:
事务隔离级别:
Python 解释器路径:
SQLAlchemy / PyMySQL 版本:
连接、写入、回滚结果:
仍待处理的问题: