1、简介
MySQL 是全球最流行的开源关系型数据库管理系统,广泛应用于 Web 开发、数据分析、企业级应用等场景,是开发者必备的基础工具之一。它具有高性能、高可靠性、易用性强的特点,被 Facebook、Twitter、YouTube 等顶级互联网公司广泛使用。MySQL 社区版完全免费开源,遵循 GPL 协议
2、版本指南
MySQL 自 2023 年起分为两条主线:LTS(长期支持版) 和 Innovation(创新版) 。
| 版本线 | 生命周期 | 适用场景 |
|---|---|---|
| LTS 长期支持版 | 5 年标准支持 + 3 年扩展支持(共 8 年) | 生产环境首选,稳定性优先 |
| Innovation 创新版 | 仅约 3-6 个月,快速迭代 | 体验新特性,不建议生产使用 |
3、版本比较
| 变化类型 | 具体内容 | 影响 |
|---|---|---|
| mysql_native_password 彻底移除 | mysql_native_password 认证插件已从 9.7 中完全移除,无法通过 INSTALL PLUGIN 重新安装,因为共享对象文件不再暴露服务器所需的符号 | 所有客户端必须支持 caching_sha2_password,旧版客户端必须升级 |
| 社区版功能增强 | 多项原本仅限企业版的功能被下放至社区版,包括:Replication Applier Metrics、Group Replication Flow Control Statistics、Group Replication Resource Manager、Group Replication Primary Election 等 | 社区版高可用和可观测性显著提升 |
| OpenTelemetry 支持 | 新增 OpenTelemetry/OTLP 遥测支持,增强可观测性 | 便于集成现有监控体系 |
| Hypergraph Optimizer | 引入 Hypergraph 查询优化器 | 复杂查询性能提升 |
| JSON Duality Views | SQL 与 JSON 数据模型的统一视图 | 灵活的数据访问方式 |
| 动态数据掩码(企业版) | 在查询时根据用户或角色自动对敏感数据进行掩码处理,无需修改应用程序 | 增强数据安全与合规能力 |
4、AI向量检索
AI / 向量检索 / 新特性尝鲜:MySQL 9.x 系列新增了 VECTOR 数据类型和向量检索支持(自 9.0 起引入),适合 AI 应用场景
5、环境准备
MySQL 9.7.0 依赖 Visual C++ 2019/2022(17版本也可以) 可再发行组件。如果系统中缺少该组件,安装初始化时会报 vcruntime140_1.dll 缺失的错误
从 Microsoft 官方下载 VC_redist.x64.exe 安装
2、检查 3306 端口是否被占用
netstat -ano | findstr :3306
6、安装步骤
6.1、下载 MySQL 9.7.0 安装包
官方地址:https://dev.mysql.com/downloads/mysql/
● 文件名格式:mysql-9.7.0-winx64.zip
● 文件大小:约 324 MB

6.2 、无需注册直接下载

6.3 解压安装包
下载的 ZIP 压缩包解压到一个纯英文、不含空格的目录,例如 D:\MySQL\mysql-9.7.0-winx64。
ZIP 包解压后没有 data 目录和 my.ini 配置文件,这两项需要在后续步骤中手动创建
解压后的目录结构如下:
| 目录/文件 | 说明 |
|---|---|
| bin/ | MySQL 可执行文件(如 mysql.exe、mysqld.exe) |
| docs/ | 官方文档 |
| include/ | 头文件 |
| lib/ | 库文件 |
| share/ | 错误消息、字符集等支持文件 |
| README | 官方说明文件 |
6.4、打开环境变量设置
右键点击桌面上的”此电脑“→选择”属性“→点击”高级系统设置“→在弹出的”系统属性”窗口中,点击”环境变量“。
新建 MYSQL_HOME 系统变量
在”系统变量“区域点击”新建“,填写:
● 变量名:MYSQL_HOME
● 变量值:MySQL 解压根目录路径,例如 D:\MySQL\mysql-9.7.1-winx64
点击”确定“保存。

将 bin 目录添加到 Path 变量
在”系统变量“列表中找到 Path 变量,选中后点击”编辑“→点击”新建“→输入 %MYSQL_HOME%\bin→点击”确定“保存所有更改

6.4、创建配置文件 my.ini
新建 my.ini 文件
在 MySQL 解压根目录(如 D:\MySQL\mysql-9.7.0-winx64)下,新建一个文本文档,重命名为 my.ini。
文件扩展名必须是 .ini 而不是 .txt。建议在资源管理器中开启”文件扩展名”显示(点击”查看”→”显示”→”文件扩展名”),避免重命名后仍是 .txt 格式。
编写 my.ini 配置内容
[mysqld]
# 设置 3306 端口
port=23307
# 设置 mysql 的安装目录 ----------是你的文件路径-------------
basedir=../
# 设置 mysql 数据库的数据的存放目录 ---------是你的文件路径 data 文件夹自行创建
datadir=../data
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集(utf8mb4 是完整 UTF-8,支持 Emoji)
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 开启慢查询日志(便于排查性能问题)
slow_query_log=1
long_query_time=2
# 错误日志
log_error=mysql-error.log
#已经移除“mysql_native_password”插件认证
#mysql_native_password
#mysql_native_password=ON
#default_authentication_plugin=mysql_native_password
#mysql --default-auth=mysql_native_password
mysqlx_bind_address = ::
mysqlx_port = 33060
[mysql]
# 设置 mysql 客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置 mysql 客户端连接服务端时默认使用的端口
port=23307
#default-auth=mysql_native_password
#default-character-set=utf8mb4
6.5、初始化数据目录
管理员身份
● --initialize:初始化数据目录,生成 data 文件夹,并为 root 账户生成一个临时随机密码
● --console:将初始化日志输出到控制台
cd /d D:\MySQL\mysql-9.7.1-winx64\bin
mysqld --initialize --console
保存临时密码
执行后,控制台会输出类似以下内容:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xxxxx

7、安装并启动 Windows 服务
7.1、注册 Windows 服务
管理员 CMD 中执行
mysqld --install MySQL970 --defaults-file="D:\MySQL\mysql-9.7.1-winx64\my.ini"
● MySQL970:自定义的服务名称(便于区分版本)
● --defaults-file:指定配置文件的绝对路径

7.2、启动服务
net start MySQL970
看到 MySQL970 服务正在启动 . MySQL970 服务已经启动成功。 提示,说明服务启动成功。
💡 服务管理命令:
● 停止服务:net stop MySQL970
● 重启服务:net stop MySQL970 && net start MySQL970
● 卸载服务:mysqld --remove MySQL970
7.3、登录并修改 root 密码
1:使用临时密码登录,输入前面生成的临时密码
mysql -u root -p
2:修改 root 密码
登录成功后,在 mysql> 提示符下执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
3:退出并重新登录验证
exit;
mysql -u root -p
# 输入新密码
看到 mysql> 提示符,说明一切正常。

7.4、配置远程连接(可选,仅开发环境)
MySQL 默认只允许本地连接。如需允许远程连接(如通过 Navicat 从另一台电脑连接),可执行以下操作
生产环境绝对不能按上述方式设置,应创建专用用户并仅授予必要的 IP 访问权限,如 CREATE USER 'appuser'@'192.168.1.%' IDENTIFIED BY 'password';
-- 切换到 mysql 数据库
USE mysql;
-- 查看当前 root 用户的主机配置
-- localhost 表示仅允许通过本机访问,% 则表示允许所有IP进行连接
SELECT Host, User FROM user;
-- 将 root 用户的主机修改为 %(允许任意 IP 连接)
UPDATE user SET Host = '%' WHERE User = 'root';
-- 刷新权限
FLUSH PRIVILEGES;

8、安装后验证清单
8.1、终端验证三连
打开新 CMD 窗口(不以管理员身份运行也可),依次执行:
mysql --version # 应显示:mysql Ver 9.7.0 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql -u root -p # 能正常登录
8.2 、服务状态验证
按 Win + R,输入 services.msc,在服务列表中找到 MySQL970,确认状态为 “正在运行”,启动类型可根据需要设置为”自动”或”手动”。
8.3、端口监听验证
在 CMD 中执行:
netstat -ano | findstr :23307
应显示端口 23307 正在监听,且状态为 LISTENING。
8.4 4创建测试表验证
-- 创建测试数据库
CREATE DATABASE testdb;
-- 切换到测试数据库
USE testdb;
-- 创建测试表
CREATE TABLE test (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入测试数据
INSERT INTO test (name) VALUES ('Hello MySQL 9.7.0');
-- 查询验证
SELECT * FROM test;
若正常显示插入的数据,说明数据库功能正常
9、基础配置与优化
9.1、服务管理
| 操作 | 命令 |
|---|---|
| 启动服务 | net start MySQL970 |
| 停止服务 | net stop MySQL970 |
| 重启服务 | net stop MySQL970 && net start MySQL970 |
| 查看服务状态 | sc query MySQL970 |
| 卸载服务 | mysqld --remove MySQL970 |
💡 开机自启设置:在services.msc中找到MySQL970,右键”属性”,将启动类型设为”自动”。
9.2、创建专用用户(最佳实践)
安装完成后,强烈不建议使用 root 账户进行日常开发,应创建专门的数据库用户:
-- 登录 MySQL
mysql -u root -p
-- 创建数据库
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户(仅允许本地连接)
CREATE USER 'appuser'@'localhost' IDENTIFIED BY '强密码';
-- 授予权限
GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出当前窗口
exit;
-- 使用新建用户登录
mysql -u appuser -p
-- 查看测试数据库是否存在
show databases;

允许远程连接(开发环境),将 'appuser'@'localhost' 改为 'appuser'@'%' 即可
9.3 常用性能参数调优
以下参数可在 my.ini 的 [mysqld] 段中调整
| 配置项 | 建议值 | 说明 |
|---|---|---|
| max_connections | 200-500 | 最大连接数,根据业务需求调整 |
| innodb_buffer_pool_size | 物理内存的 50%-70% | InnoDB 缓存池大小,最重要的性能参数 |
| slow_query_log | 1 | 开启慢查询日志 |
| long_query_time | 2 | 慢查询阈值(秒) |
| log_error | 指定日志文件路径 | 错误日志位置 |
| innodb_log_file_size | 512M-2G | InnoDB 重做日志文件大小 |
| innodb_flush_log_at_trx_commit | 2(性能优先)/ 1(安全优先) | 事务日志刷新策略 |
| tmp_table_size | 64M-256M | 内存临时表最大大小 |
| max_heap_table_size | 64M-256M | 内存表最大大小 |
9.4 客户端认证兼容(MySQL 9.7必须 )
MySQL 9.7 彻底移除了 mysql_native_password 认证插件,所有用户必须使用 caching_sha2_password 认证方式
无法通过 default_authentication_plugin=mysql_native_password 配置回退到旧认证方式
● 无法通过 INSTALL PLUGIN 重新安装 mysql_native_password 插件
● 所有连接 MySQL 9.7 的客户端必须支持 caching_sha2_password
方案1:升级客户端版本
将 Navicat、SQLyog、DBeaver 等客户端工具升级到最新版本,这些新版本已原生支持 caching_sha2_password 认证插件
方案2:确认用户使用正确的认证方式
-- 查看当前用户的认证插件
SELECT USER, HOST, PLUGIN FROM mysql.user;
-- 确保用户使用的是 caching_sha2_password
-- 如果从旧版本迁移过来的用户仍使用 mysql_native_password,需要修改:
ALTER USER 'username'@'host' IDENTIFIED WITH caching_sha2_password BY 'password';
FLUSH PRIVILEGES;
方案3:应用程序驱动升级
如果使用 Java、Python 等编程语言连接 MySQL 9.7:
● Java(JDBC) :升级 MySQL Connector/J 到 8.2.0 及以上版本,该版本原生支持 caching_sha2_password
● Python:升级 mysql-connector-python 到最新版本,或使用 pymysql 的最新版本
● PHP:确保 PHP 7.4+ 并升级 mysqli 扩展
9.5 OpenTelemetry 监控集成(MySQL 9.7 新特性)
MySQL 9.7 社区版新增了 OpenTelemetry/OTLP 遥测支持,可将 MySQL 的性能指标导出到 Prometheus、Jaeger 等监控系统。如有兴趣使用此功能,可参考 MySQL 9.7 官方参考手册中的 OpenTelemetry 相关章节
10、常见问题
Q1:mysql 不是内部或外部命令,也不是可运行的程序
● 原因:环境变量未配置或未生效。
● 解决:检查 MYSQL_HOME 和 Path 环境变量是否正确配置,关闭当前 CMD 窗口,重新打开一个新窗口再试。
Q2:vcruntime140_1.dll 缺失
● 原因:系统缺少 Visual C++ 2019⁄2022 可再发行组件。
● 解决:从 Microsoft 官方下载 VC_redist.x64.exe 安装,安装后重启电脑。
Q3:初始化报 Data directory has files
● 原因:data 目录非空或已存在。
● 解决:删除 data 目录(如果存在),重新执行 mysqld --initialize --console。
Q4:3306 端口被占用
● 原因:其他 MySQL 实例或应用(如 XAMPP、MariaDB)占用了 3306 端口。
● 解决:
- 方法一:停止占用端口的程序
- 方法二:修改
my.ini中的port = 3307改为其他端口,然后重新初始化并安装服务。
Q5:net start MySQL970 启动失败,服务无法启动
● 原因:配置文件 my.ini 路径错误、basedir/datadir 路径错误、或路径中包含中文/空格。
● 解决:检查 my.ini 文件是否存在于 MySQL 根目录,确认 basedir 和 datadir 路径与实际情况一致,确认路径中使用正斜杠 / 而非单反斜杠 \,检查错误日志:在 data 目录下找到 .err 文件,查看具体错误信息。
Q6:初始化时生成的临时密码丢失
● 原因:未及时保存临时密码,或日志被覆盖。
● 解决:
- 方法一:删除
data目录,重新执行mysqld --initialize --console,会生成新密码 - 方法二:使用
--initialize-insecure初始化(生成空密码),登录后修改密码
Q7:Access denied for user 'root'@'localhost'
● 原因:密码错误,或 CMD 未以管理员身份运行。
● 解决:确认输入的密码正确,尝试以管理员身份打开 CMD 再试,如果忘记密码,参考 7.2 节 Q6 重置密码。
Q8:Client does not support authentication protocol(2058 错误)
● 原因:MySQL 9.7 彻底移除了 mysql_native_password 插件,仅支持 caching_sha2_password 认证方式。旧版客户端不兼容。
● 解决:
- 方法一(推荐) :升级客户端工具到最新版本。Navicat Premium 16+、DBeaver 23+、DataGrip 2024+ 等均原生支持
caching_sha2_password - 方法二:升级编程语言的数据库驱动(如 MySQL Connector/J 8.2+、mysql-connector-python 最新版)
⚠️
注意:MySQL 9.7 无法通过修改配置或安装插件的方式恢复
mysql_native_password 支持
Q9:远程无法连接 MySQL
● 原因:用户 host 限制为 localhost,或防火墙未开放端口,或 my.ini 中 bind-address 未设置。
● 解决:执行 UPDATE mysql.user SET Host = '%' WHERE User = 'root'; FLUSH PRIVILEGES;(仅开发环境),在 Windows 防火墙中添加入站规则,开放 3306 端口,确保 my.ini 中没有 bind-address = 127.0.0.1(或注释掉该行)。
Q10:MySQL 服务意外停止或无法启动
● 原因:配置文件错误、数据目录损坏、端口冲突或权限不足。
● 解决:检查 my.ini 配置是否有语法错误,查看错误日志(data 目录下的 .err 文件),检查 3306 端口是否被占用,确保安装目录和数据目录具有完全控制权限。
Q11:中文插入或查询显示乱码
● 原因:字符集未设置为 utf8mb4。
● 解决:在 my.ini 中确认 character-set-server = utf8mb4 和 default-character-set = utf8mb4,重启服务后对已有数据库执行 ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;。
Q12:忘记 root 密码
● 解决:停止 MySQL 服务:net stop MySQL970,以管理员身份打开 CMD,进入 bin 目录,执行 mysqld --skip-grant-tables,新开一个 CMD 窗口,执行 mysql -u root 无密码登录,执行 FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';,关闭所有窗口,重启 MySQL 服务
Q13:从 MySQL 8.4 升级到 9.7 后,应用连接报认证错误
● 原因:MySQL 9.7 不再支持 mysql_native_password 认证。如果之前在 8.4 中使用 mysql_native_password 创建的用户,升级后即使密码正确也无法通过旧认证方式连接。
● 解决:在升级前,先将所有用户的认证方式从 mysql_native_password 迁移到 caching_sha2_password,同步升级所有客户端驱动和工具到支持 caching_sha2_password 的版本
ALTER USER 'username'@'host' IDENTIFIED WITH caching_sha2_password BY 'password';
11、常用 SQL 命令速查
| 操作 | SQL 语句 |
|---|---|
| 查看 MySQL 版本 | SELECT VERSION(); |
| 查看所有数据库 | SHOW DATABASES; |
| 切换数据库 | USE database_name; |
| 查看所有表 | SHOW TABLES; |
| 查看表结构 | DESC table_name; |
| 创建数据库 | CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; |
| 删除数据库 | DROP DATABASE dbname; |
| 创建用户 | CREATE USER 'username'@'host' IDENTIFIED BY 'password'; |
| 授予权限 | GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host'; |
| 查看用户 | SELECT User, Host FROM mysql.user; |
| 修改密码 | ALTER USER 'username'@'host' IDENTIFIED BY 'new_password'; |
| 刷新权限 | FLUSH PRIVILEGES; |
| 导出数据库 | mysqldump -u root -p dbname > backup.sql |
| 导入数据库 | mysql -u root -p dbname < backup.sql |
| 查看用户认证插件 | SELECT User, Host, Plugin FROM mysql.user; |
目录速查
| 路径 | 说明 |
|---|---|
| D:\MySQL\mysql-9.7.0-winx64 | MySQL 安装根目录 |
| D:\MySQL\mysql-9.7.0-winx64\bin | 可执行文件目录 |
| D:\MySQL\mysql-9.7.0-winx64\data | 数据文件目录(初始化后生成) |
| D:\MySQL\mysql-9.7.0-winx64\my.ini | MySQL 配置文件(需手动创建) |
参考

1143

被折叠的 条评论
为什么被折叠?



