
Windows 版 MySQL 安装与使用教程
适用系统:Windows 10 / 11(64 位)
安装方式:官网 ZIP
命令行:统一使用 Windows 终端(配置与安装阶段需以管理员身份运行)
前置条件:64 位 Windows、有管理员权限的账号、准备一个纯英文且不含空格的目录用来放 MySQL(例如 D:\Develop\)。
一、下载
前往官网 https://dev.mysql.com/downloads/mysql/,下载最新 LTS 版的 Windows(x86, 64-bit)ZIP Archive 压缩包(本文以 mysql-9.7.2-winx64.zip 为例)。
二、解压
解压到纯英文、无空格、层级较浅的路径(如 D:\Develop\),不要放在 C:\Program Files、桌面或含中文的目录里,也不要解压出双层嵌套。解压后得到 MySQL 的“根目录”,本文统一记作 D:\Develop\mysql-9.7.2-winx64。
目录里主要关注两项:
目录 | 用途 |
|---|---|
| 可执行文件: |
| 数据目录,解压包里没有,初始化时自动生成 |
⚠️ 不要手工新建空的 data 目录,否则初始化会失败。
三、配置与启动
本章命令均需在以管理员身份运行的终端中执行;若改用命令提示符(CMD),
Get-Service、Start-Service这类命令需换成对应的sc/net命令。
3.1 配置环境变量
变量 | 值 |
|---|---|
| MySQL 根目录,如 |
| 追加 |
配置后必须重新打开终端窗口才生效,用 mysql --version 能打印出版本号即成功。
3.2 可选:自定义 my.ini
MySQL 默认使用内置配置(端口 3306、字符集 utf8mb4、数据目录为根目录下的 data),默认值够用就跳过本节。
需要改端口、字符集、数据目录等参数时,在初始化之前于根目录新建 my.ini:
BASH
[mysqld]
basedir=D:/Develop/mysql-9.7.2-winx64
datadir=D:/Develop/mysql-9.7.2-winx64/data
port=3306
character-set-server=utf8mb4
max_connections=200路径用
/或\\,不要用单个\。用了自定义
my.ini,接下来的初始化(3.3)与注册服务(3.4)都要加上--defaults-file="...\my.ini";日后改配置需重启服务(见 3.5)才生效。不要写已被移除的
default_authentication_plugin(8.4 起移除)。
3.3 初始化 data 目录
BASH
mysqld --initialize-insecure无报错返回即成功,根目录下会生成 data。这条命令把 root 密码初始化为空,且只能执行一次(若用 mysqld --initialize,则生成随机密码,见 data 目录下以主机名命名的 .err 日志,如 DESKTOP-ABC123.err)。
报错处理:
提示权限不足——以管理员身份重新运行。
The designated data directory ... is unusable.——data目录已存在且非空,删除后重新执行。
3.4 注册为 Windows 服务
注册成系统服务后,才能用“启动 / 停止服务”的方式管理 MySQL:
BASH
mysqld --install不指定服务名时默认注册为 MySQL(Windows 服务名不区分大小写,本文命令统一写作 mysql),看到 Service successfully installed. 即成功。
用了自定义 my.ini(见 3.2)时,需要在服务名之后指定配置文件:
BASH
mysqld --install mysql --defaults-file="D:\Develop\mysql-9.7.2-winx64\my.ini"服务名若不是 mysql,后面的启动、停止、卸载都要换成该名字。
注册完成后服务不会立即启动(它的启动类型已默认为“自动”,随 Windows 启动),需要按 3.5 手动启动一次。
3.5 启动、停止与重启服务
启动 MySQL
BASH
Start-Service mysql无输出即启动成功;若服务本来就在运行,该命令同样不报错、不输出,可用 Get-Service mysql 确认状态(net start mysql 则会提示“MySQL 服务已经启动成功。”)。
停止 MySQL
BASH
Stop-Service mysql停止前请先断开正在使用的数据库连接,否则这些连接会直接中断(net stop mysql 则会提示“MySQL 服务已成功停止。”)。
重启 MySQL(修改 my.ini 后需要)
BASH
Restart-Service mysql查看运行状态
BASH
Get-Service mysqlStatus 显示 Running 表示正在运行,Stopped 表示已停止。
调整启动类型(可选)
服务注册时的启动类型默认就是“自动”,即开机随 Windows 启动;若要改成手动启动:
BASH
Set-Service mysql -StartupType Manual再改回自动:Set-Service mysql -StartupType Automatic。
图形界面方式:Win + R 输入 services.msc,在列表中找到 MySQL,右键即可“启动 / 停止 / 重新启动”;双击该服务还能修改“启动类型”(默认为“自动”)。
若提示找不到名为
mysql的服务,说明注册未成功或服务名不是mysql,见 五、常见问题 的 Q4。
3.6 设置 root 密码
--initialize-insecure 建出来的 root 密码为空,首次设置时直接执行:
BASH
mysqladmin -u root password 1234若 root 已经设过密码,则需要先登录再修改(登录方法见 4.1),执行:
BASH
ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';
1234仅作演示,生产环境请使用 8 位以上、含大小写字母数字符号的密码;上面两条命令都会把密码留在历史记录里,公用机器上请留意。
四、登录与常用命令
4.1 登录
BASH
mysql -u root -p提示 Enter password: 后输入密码,提示符变为 mysql> 即登录成功。也可以把密码写进命令(-p 与密码之间不能有空格,写成 -p 1234 会被当成数据库名):
BASH
mysql -u root -p1234到这里你就可以开始你的 MySQL 之旅了!
4.2 常用命令
在 mysql> 提示符下执行,每条 SQL 以分号 ; 结尾:
BASH
status; -- 连接信息与版本
show databases; -- 列出所有数据库
create database test_db default character set utf8mb4; -- 建库
use test_db; -- 切换数据库
drop database test_db; -- 删库(数据一并删除)4.3 退出与登录参数
BASH
exit(quit、\q 等价。)
BASH
mysql -h 主机地址 -P 端口号 -u 用户名 -p参数 | 含义 | 默认值 |
|---|---|---|
| 服务器地址 |
|
| 端口号(大写 P) |
|
| 用户名 | 当前系统用户名 |
| 密码(小写 p,可紧跟密码或留空交互输入) | 空 |
五、常见问题
Q1 mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
环境变量未生效:确认已重新打开终端窗口,且 MYSQL_HOME 不带 \bin、Path 中已加入 %MYSQL_HOME%\bin。(若用命令提示符打开,报错文案是 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件,含义相同。)
Q2 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306'
服务未启动,按 3.5 执行 Start-Service mysql。
Q3 Access denied for user 'root'@'localhost'
密码错误,用 mysql -u root -p 交互输入;忘记密码见 Q6。
Q4 找不到名为 mysql 的服务
服务未注册成功或服务名不同,用 Get-Service 核对,必要时回到 3.4 重新注册。
Q5 服务启动失败(报 1067 或启动后立刻停止)
多为 data 目录未初始化、my.ini 参数写错或端口被占用,具体原因看 data 目录下最新的 .err 日志。
Q6 忘记 root 密码
① Stop-Service mysql;② 新开一个管理员终端窗口执行 mysqld --skip-grant-tables --console 并保持该窗口开着;③ 另开一个终端窗口执行 mysql -u root,然后执行:
BASH
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';④ 退出后回到第 ② 步的窗口按 Ctrl + C,最后 Start-Service mysql。
Q7 3306 端口被占用
用 Get-NetTCPConnection -LocalPort 3306 | Select-Object OwningProcess 查到 PID,再 Get-Process -Id <PID> 定位程序;或在 my.ini 中改 port(连接时用 -P 新端口)。
Q8 旧客户端/驱动报 Authentication plugin 'caching_sha2_password' cannot be loaded
升级客户端或驱动(JDBC 8.x 以上、新版 Navicat),不要改服务器的认证插件。
Q9 中文乱码
建库建表时使用 utf8mb4 字符集。
六、卸载
卸载会连同 data 目录一起删除,数据无法恢复,需要保留的库请先导出:
BASH
mysqldump -u root -p --all-databases --result-file=D:\backup_all.sql(用 --result-file 指定输出文件、而不是用 > 重定向,避免导出文件被写成 UTF-16 编码而无法导入。)
然后在以管理员身份运行的终端中依次执行:
停止服务:
Stop-Service mysql卸载服务:
mysqld --remove mysql清理环境变量:删除
MYSQL_HOME,并从Path中删掉%MYSQL_HOME%\bin删除 MySQL 根目录
至此,MySQL 卸载完成!
附录:命令速查
用途 | 终端命令 |
|---|---|
初始化 data 目录(root 空密码) |
|
初始化 data 目录(生成随机密码) |
|
注册 / 卸载服务 |
|
启动 / 停止 / 重启服务 |
|
查看服务状态 |
|
启动类型(默认自动) |
|
登录 / 修改密码 |
|
查看版本 / 命令路径 |
|
备份全部数据库 |
|
查看端口占用 |
|



请登录后发表评论