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