MySQL数据库是一款非常实用的数据库管理语言,是Oracle(美国甲骨文)公司旗下产品,也是目前MySQL语言使用最多、最广为人知的数据库之一,因为它是一种开放源代码的关系型数据库管理系统,可用对数据库、语言进行管理和结构化查询,这也就是我们熟知的SQL语句。在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系型数据库管理系统) 应用软件之一。MySQL数据库体积小,运行速度快,社区版免费,商业版价格低,非常适合中小型企业或网站的选择。

MySQL安装配置教程

温馨提示:如果第一步运行“mysql-9.5.0-winx64.msi”程序弹出下方对话框,需自行安装VS 2019,方可进入下一步!

安装步骤

1、下载解压后运行“mysql-9.5.0-winx64.msi”程序,如图所示;

2、点击“Next”按钮;

3、阅读协议后,如图所示勾选“I accept the……”,点击“Next”按钮;

4、根据情况选择安装模式,这边以第二个“Custom”为例;

5、点击Browse…可更改软件安装路径,再点击“Next”按钮;

6、等待片刻;

7、安装完成后默认勾选“Run MySQL Configurator”前方框,再点击“Finish”按钮;

8、点击“Next”按钮;

9、视情况选择路径,再点击“Next”按钮;

10、现有四个配置类型,前三者分别是

如果是开发学习,默认选择第一个即可;

如果是面向企业级服务部署,选择第二个【占用空间】优化高并发与稳定性,典型应用包括:

●FTP文件传输服务器

●Email邮件服务集群

●Web服务器(如Apache/Nginx)

●负载均衡节点

如果是单一功能专用设备,选择第三个,例如:

●独立MySQL数据库服务器,配置RAID存储与查询缓存优化

区块链全节点机器

高性能计算(HPC)任务专用机

根据需求选择,这边以第一个为例:

11、随后配置根据选择的类型进行更改,如果是第一个默认即可,再点击“Next”按钮;

12、设置密码;

13、紧接着点击Add User按钮,设置用户名及密码;

14、完成后点击“Next”按钮;

15、点击“Next”按钮;

16、这里可以设置服务器文件权限,默认即可,有需求可自行选择;

17、根据情况选择,如果你是初学者可以勾选,有一定基础的可以直接点击“Next”按钮;

18、点击“Execute”按钮进行安装;

19、安装过程中,等到片刻;

20、如图所示安装完成,可以看到进度条前面都是“绿色勾”,点击“Next”按钮;

21、再点击右下角“Finish”按钮;

22、在开始菜单栏找到“MySQL 9.5 Command Line Client”将其拖到桌面,创建快捷启动程序;

23、如图所示输入密码,回车;

24、MySQL数据库安装完成【此时cmd运行MySQL是失败的需进行环境变量配置,教程如下】;

配置环境变量教程

1、找到MySQL的安装路径【默认路径“C:\Program Files\MySQL\”找下】;

2、设置中找到“高级系统设置”,先点击“高级”,再点击“环境变量;

3、在“系统变量”中选择“Path”,点击“编辑”;

4、点击“新建”;

5、将MySQL的安装路径复制进去,点击“确认”;

6、验证环境变量是否配置好,按下“Window+R”键,弹出运行框,输入“cmd”进入Window命令行;

7、输入“mysql -u root -p”按下回车,输入密码,按下“Enter键(回车键)”,出现下面界面则是已经配置成功;

MySQL数据库常用的命令

1、创建数据库名为( CREATE DATABASE 数据库名; )

2、选择一个数据库( USE 数据库名; )

3、创建一个表格( CREATE TABLE 表格名 (name VARCHAR(20), sex CHAR(1)); )

4、查看数据库中的表格( SHOW TABLES; )

5、往表格中加入数据( INSERT into 表格名 values (,"name","value"); )

6、删除表格( DROP TABLE 表格名; )

7、清空表格( DELETE from 表格名; )

软件特点

-高速是最显著特性,使用了极快的“B树”磁盘表(MyISAM)和索引压缩;通过使用优化的“单扫描多连接”,能够实现极快的连接。一直以来,高速都是MySQL吸引众多用户的特性之一。

-支持超过20种开发平台,包括Linux、Windows、FreeBSD、IBM AIX、HP-UX、Mac OS、OpenBSD、Solaris等,这使得用户可以选择多种平台实现自己的应用,并且在不同平台上开发的应用系统可以很容易在各种平台之间进行植。-为各种流行的程序设计语言提供了很多API函数,包括C、C++、Java、Perl、PHP等。

-提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能。强大的存储引擎使MySQL能够有效应用于任何数据库应用系统,高效完成各种任务,无论是大量数据的高速传输系统,还是每天访问量超过数亿的高强度的搜索Web站点。

-InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间还可以包括原始磁盘分区,从而使构建很大的表成为可能,最大容量可以达到64TB

-灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。

-采用GPL许可,很多情况下,用户可以免费使用MySQL;对于一些商业用途,需要购买商业许可,但价格相对低廉

更新说明

v9.5.0版本(2025-10-21)

账户管理说明

MySQL 现在通过引入新选项 activate_mandatory_roles 来支持增强的角色管理。

若启用了 activate_all_roles_on_login,则 activate_mandatory_roles 会被忽略,此时强制角色和被授予的角色均会激活。若 activate_all_roles_on_login 未启用而 activate_mandatory_roles 启用,则除了账户关联的默认角色外,强制角色也会激活。

若两者均未启用,则仅激活账户的默认角色。

activate_mandatory_roles 默认启用。(WL #16597)

审计日志说明

修复了与审计日志策略相关的问题。(Bug #38223011)

改进了向企业审计过滤器添加多个 general_sql_command.str 字段时的性能。(Bug #38053242)

修复了与 audit_log_read 性能相关的问题。(Bug #36281295, Bug #38275868)

认证说明

安全增强:caching_sha2_password_digest_rounds 的默认值增加至 10,000。(WL #16974)

在某些情况下,若配置的数据目录路径比默认路径短,密钥环组件可能无法读取配置文件。(Bug #38078884)

通用密钥环函数未正确处理无效参数。(Bug #38055488)

二进制日志

重要变更:服务器系统变量 binlog_transaction_dependency_history_size 的默认值已从 25000 增加至 1,000,000(一百万)。该变量的最大值也从 1,000,000 提升至 10,000,000(一千万)。

此项更改不会对现有设置产生直接影响。

更多信息请参见 binlog_transaction_dependency_history_size 的描述。(WL #16439)

编译说明

Solaris:现可在 Solaris 上使用 Clang 和 GCC 编译 MySQL。(Bug #30562248)

Solaris 现在使用 OpenSSL 3。(Bug #38193362)

升级内置的 googletest 库至版本 1.17。(Bug #38152017)

升级内置的 libbacktrace 库至最新版本(2025 年 4 月)。(Bug #38151970)

MySQL Server 现在捆绑了 libzip,并在编译服务器时提供了 CMAKE 选项以选择使用内置库或系统库。(Bug #38109824)

对于支持的平台,CMAKE 的最低要求版本现已提升至 3.17.5。(Bug #38090672)

使用 GCC 15 构建 MySQL Server 时,会记录编译器警告。(Bug #37721464)

组件说明

MYSQL_OPTION.OPTION_USAGE.OPTION_NAME 字段使用的字符集与 PERFORMANCE_SCHEMA.MYSQL_OPTION.OPTION_NAME 不同。

自本版本起,MYSQL_OPTION.OPTION_USAGE 的 CLUSTER_ID、SERVER_ID 和 OPTION_NAME 字段使用 utf8mb4_general_ci 字符集,而不再是 ascii。(Bug #38230424)

mysql_command_error_info 服务中的 sql_errno() 方法在命令失败时返回 0,而非相应的错误代码。(Bug #38178087)

服务器插件系统变量标志 PLUGIN_VAR_NOSYSVAR 未被正确处理。使用此标志定义的变量本应隐藏,但仍被显示出来。(Bug #37654916)

在使用密钥环 UDF 插件并执行包含 keyring_key_generate 函数的特定查询时,错误处理不正确。(Bug #37501458)

遥测组件引入了密钥解码服务,使您能为 OpenTelemetry 创建自己的密钥解码服务。

新增以下系统和状态变量:

●telemetry.otel_exporter_otlp_traces_secret_headers

●telemetry.otel_exporter_otlp_metrics_secret_headers

●telemetry.otel_exporter_otlp_logs_secret_headers

●telemetry.resource_provider

●telemetry.secret_provider

●telemetry.run_level

(WL #16647)

配置说明

Microsoft Windows:若 MySQL 服务器配置为进程(而非服务),则由于检测服务器准备就绪以接收连接存在延迟,配置器的“启动服务器”步骤可能耗时较长才能完成。(Bug #38068649)

Microsoft Windows:当共享内存连接(--enable-shared-memory=true)是服务器配置期间唯一启用的协议时,连接会失败。(Bug #38068619)

Microsoft Windows:在新服务器配置期间,无法使用单引号或双引号创建包含转义字符的用户名。(Bug #37459624)

Microsoft Windows:升级时(例如从版本 9.1.0 升级至 9.2.0),若使用非默认端口(如 3307),即使服务器配置正确且升级成功,仍可能生成指示连接到端口 3306 出现问题的消息。返回的错误类似于以下内容:

Can't connect to MySQL server on 'localhost:3306'

(10061)

(Bug #37459255)

Microsoft Windows:MySQL 配置器的 CLI 帮助现在能正确显示可配置服务器选项的受支持值列表。(Bug #37458648)

--config-type 配置器 CLI 选项先前不接受任何值。(Bug #38068684)

连接管理说明

连接控制现在支持将未知用户排除在延迟标准之外,引入了新的系统变量 component_connection_control.exempt_unknown_users,允许管理员配置是否应对没有用户凭据的失败连接尝试进行惩罚。此增强功能提高了组件处理来自负载均衡器的合法连接尝试的能力,在保持有效阻止暴力攻击的同时,确保更好的服务器可用性。新的状态变量 Component_connection_control_exempted_unknown_users 提供了关于已豁免连接数量的信息。

更多信息请参见(参考资料链接)。(WL #17037)

弃用和移除说明

在 MySQL 8.4.0 中已弃用的系统变量 group_replication_allow_local_lower_version_join 现已被移除。(WL #16019)

在 MySQL 8.0.29 中已弃用的系统变量 replica_parallel_type 现已被移除。(WL #13955)

用于 SASL LDAP 认证的 SCRAM-SHA-1 认证方法现已弃用,并将在未来的 MySQL 版本中被移除。鼓励您改用 SCRAM-SHA-256。

作为此项工作的一部分,系统变量 authentication_ldap_sasl_auth_method_name 的默认值已更改为 SCRAM-SHA-256;值 SCRAM-SHA-1 现已弃用。

更多信息,请参见 LDAP 可插拔认证。(WL #17022, WL #17034)

以下已弃用的插件在此版本中被移除:

●semisync_master 由 semisync_source 取代。

●semisync_slave 由 semisync_replica 取代。

(WL #16801)

SQL 函数和运算符说明

修复了与执行某些 UPDATE 语句相关的问题。(Bug #37590580)

参考:此问题是以下问题的回归:Bug #31562881。

InnoDB 说明

重要变更:innodb_log_writer_threads 的默认值现在部分取决于是否启用了二进制日志记录,如下所示:

text

if (log_bin = OFF)

{

if ([number of logical CPUs] <= 4)

{

innodb_log_writer_threads = OFF

}

else

{

innodb_log_writer_threads = ON

}

}

else

{

if ([number of logical CPUs] <= 32)

{

innodb_log_writer_threads = OFF

}

else

{

innodb_log_writer_threads = ON

}

}

当二进制日志记录被禁用(log_bin 为 OFF)时,默认值的确定方式与 MySQL 9.4 及更早版本相同。

此更改不会影响该变量已配置的值(如果已设置)。

更多信息,请参见 MySQL 文档中关于 innodb_log_writer_threads 的描述;另请参见优化 InnoDB 重做日志记录。(WL #16999)

InnoDB:dict_stats_analyze_index() 函数可能会丢弃基于索引的**访问路径,导致在大表上同时读取到空的索引统计信息或错误返回导致索引统计信息为空时,性能欠佳。

感谢 Casa Zang 和腾讯团队的贡献。(Bug #33472935)

为并行扫描创建线程可能会失败,导致在回退到单线程模式时断言失败。返回的错误类似于:

text

Assertion failure: row0pread.h:306:active >= n_threads

(Bug #38325137)

在某些情况下,在 32 位构建的 MySQL 服务器上,虚拟索引回滚可能会失败。(Bug #38167527)

mlog read_1_bytes 注释现在准确反映了 1 字节的字节大小,而不是 2 字节。

感谢 Jeong Geun Lee 的贡献。(Bug #38001828)

如果缓冲池非常大,可能会导致每个缓冲池实例需要大量的块,如果操作系统无法分配所需的内存,则可能会失败。

自本版本起,会检查此分配以确保其正确分配。(Bug #37994397)

用户可能会因数据大小和边界不匹配而遇到断言失败。返回的错误类似于:

text

Assertion failure: ddl0file-reader.cc:193:m_ptr + data_size < m_bounds.second

(Bug #37882398)

参考:此问题是以下问题的回归:Bug #37233273。

修复了与修改内部 FTS 配置相关的问题。(Bug #37792010)

修复了与清理协调器相关的问题。

感谢 Yin Peng 和腾讯团队的贡献。(Bug #37628911)

修复了与虚拟索引相关的问题。(Bug #37602657)

当同时优化和更新表时,MySQL Server 的行为可能不可预测。(Bug #37324137)

如果由于 innodb_strict_mode=OFF 导致行大小超过允许的最大值,在某些情况下(例如从表中选择或删除列时)可能会出现类似“无法添加字段”的混淆警告消息。

针对此情况的错误消息已改进。(Bug #37003342, Bug #36768046, Bug #36867372)

dict_stats_analyze_index() 函数可能会丢弃基于索引的**访问路径,导致在大表上同时读取到空的索引统计信息或错误返回导致索引统计信息为空时,性能欠佳。

感谢 Casa Zang 和腾讯团队的贡献。(Bug #33472935)

在极少数情况下,清理操作期间可能存在竞争条件。(Bug #32679024)

自本版本起,innodb_change_buffering 的默认值为 ALL。这改进了对二级索引更新的处理。(WL #16967)

JavaScript 程序

JavaScript 存储过程中 SQL 调用的结果集大小限制已提高,以支持更大的数据量。(Bug #38413760)

MySQL 多语言引擎组件提供的 JavaScript 语言支持现在符合 ECMAScript 2025 语言规范(ECMA-262,第 15 版),如 https://262.ecma-international.org/16.0/ 所示。(Bug #38358516)

MLE 组件未正确处理虚拟文件系统路径。自本版本起,包含冗余或相对目录(例如 ./ 或 ../)的路径将被接受而不会出错。(Bug #38198011)

MySQL 现在支持对 mle.memory_max 变量设置在本地进行自动配置,利用基于公式的方法动态分配内存。这确保此变量的默认值计算为总物理内存的 5%,并限制在 0.4GB 到 32GB 的范围内。

更多信息,请参见 MLE 组件内存和线程使用情况。(WL #17033)

JSON 说明

在 JSON 列中解析非常大的、高精度的指数表示法浮点数(例如 5.0000000000000004e36)可能会导致校验和验证错误。(Bug #38033684)

插入到 TIME 列中的大 TIME 值在转换为 JSON 时变小了。(Bug #37458212)

修复了在使用 ALTER USER 语句处理 mysql.user.user_attribute 列中的 JSON 键值时,若 JSON 属性包含空白或空键值对所导致的问题。(Bug #31067575)

JSON 二元视图

允许将 0 用作 AUTO_INCREMENT 列的显式请求。(Bug #38319365)

可以删除 JSON 二元视图的嵌套子项中的单例子项。自本版本起,不再允许删除 JSON 二元视图的嵌套子项中的单例子项。(Bug #38305543)

创建包含子查询的 WHERE 条件的 JSON 二元视图会导致断言失败,并且服务器可能意外关闭。返回的错误类似于:

text

Assertion `nullptr != dynamic_cast(arg)' failed.

(Bug #38187473)

即使 AUTO_INCREMENT 列不是连接条件的一部分,包含该列的 JSON 二元视图的 INSERT 语句也会被拒绝。(Bug #38179925)

当使用 derived_merge=off 优化器提示时,JSON 二元视图的 DML 查询和 SELECT 查询表现出不一致的行为。(Bug #38175557)

执行 JSON 二元视图的 UPDATE 语句可能导致服务器意外关闭。返回的错误类似于:

text

Address not mapped to object

(Bug #38084877)

密钥环说明

component_keyring_kmip 或 keyring_okv 现在支持 Oracle Key Vault (OKV) 服务器 21.10 或更高版本上的 SECRET 密钥类型。(WL #17090)

keyring_okv 插件已弃用,并由 keyring_kmip 组件取代,从而能够与符合密钥管理互操作性协议 (KMIP) 1.1 的产品(如 Oracle Key Vault、Gemalto SafeNet KeySecure 设备、Townsend Alliance Key Manager 和 Entrust KeyControl)进行安全通信。(WL #16524)

MySQL 程序

此版本包含 MySQL 诊断监视器 (mysqldm),这是一个新的客户端工具,旨在收集服务器诊断信息。例如,提供给 Oracle 支持以高效解决问题。mysqldm 客户端工具在服务器上运行一组预定义的查询,将结果以 JSON 格式存储,并提供选项用于自定义输出目录、迭代次数和迭代之间的延迟。

注意

MySQL 诊断监视器仅适用于 MySQL 企业版。

(WL #16973)

优化器说明

当结果来自哈希连接读取 temptable 引擎中的表,并且临时表足够大到存储在磁盘上时,使用行 ID 进行排序可能会产生不正确的结果。(Bug #38418831)

由于缺少条件,使用物化半连接的查询可能会返回不正确的结果。

感谢 Jingqi Tian 和阿里巴巴团队。(Bug #38110792)

修复了与查询执行相关的问题。(Bug #37847144)

引入了针对 DATE 和 DATETIME 值的单独评估函数,为这些数据类型使用不同的类以优化服务器性能。(Bug #37743288)

修复了涉及相关标量子查询和 JSON 表的 SQL 查询问题。(Bug #36684370)

使用预处理语句检索时间类型数据的查询并不总是返回预期结果,无论是否指定了精度。(Bug #36065557)

在 TIME 列上使用 WHERE IN (NULL,'xx:xx:xx.xxxxxx'); 返回空集,而使用 WHERE IN ('xx:xx:xx.xxxxxx') 则返回预期结果。(Bug #35500028)

在 TIME 列上使用 IN() 运算符时,如果列表包含 NULL 或空字符串且匹配到一个值,可能返回空集。(Bug #34188599)

以下系统变量的默认值已更改:

●explain_format: 从 TRADITIONAL 更改为 TREE

●explain_json_format_version: 从 1 更改为 2

(WL #17039)

打包说明

对于捆绑 OpenSSL 库的平台,MySQL Server 链接的 OpenSSL 库已更新至版本 3.0.17。更多信息,请参见 OpenSSL 3.0 系列发行说明。(Bug #38457056)

在 Fedora 42 上安装 MySQL Server RPM 可能会因与 MariaDB 11.8 软件包冲突而失败。返回的错误类似于:

text

file /usr/bin/mysqld conflicts between mysql-community-server-8.4.7 and mariadb11.8-server-3:11.8.3, file /usr/share/man/man1/mysql.1.gz conflicts between mysql-community-client-8.4.7 and mariadb11.8, file /usr/lib/systemd/system/mysqld.service conflicts between mysql-community-server-8.4.7 and mariadb11.8-server

(Bug #38384844)

RPM 规范文件和 DEB 控制文件缺少几项要求,导致无法构建这些格式。(Bug #38310603)

MySQL Server 现在支持不同创新版本和 LTS 版本的并行安装。(Bug #38104701)

性能模式说明

当 SQL_MODE 设置为非严格值时,二进制协议中的无效时间值会被静默调整。自本版本起,此类值将被拒绝并报错。(Bug #38352728)

以下遥测系统变量默认启用,导致连接失败和日志刷屏:

●telemetry.log_enabled

●telemetry.metrics_enabled

●telemetry.trace_enabled

自本版本起,这些变量默认禁用。(Bug #38345446, Bug #38347061)

以下遥测端点系统变量的默认值(例如 http://localhost:4318/v1/traces)导致了日志刷屏,并且使用 http 而不是 https 定义:

●telemetry.otel_exporter_otlp_logs_endpoint

●telemetry.otel_exporter_otlp_metrics_endpoint

●telemetry.otel_exporter_otlp_traces_endpoint

自本版本起,这些变量没有默认值。(Bug #38133218)

在连接控制插件上等待的连接未显示在 performance_schema.processlist 表中。(Bug #38043683)

具有相同 SQL_DIGEST 的查询可能会产生相同的摘要,即使它们具有不同的特征,例如不同的 ORDER BY 子句。摘要计算已改进,以更好地区分这些查询。(Bug #31103386)

可插拔认证

在使用 authentication_oci 插件进行认证时,如果服务器和客户端的默认认证方法在首次连接时不同,并且使用了 --default-auth 参数,则会发生客户端-服务器握手错误。返回的错误类似于:

text

An error occurred during the client server handshake.

(Bug #37092159)

复制说明

MySQL 复制支持增强的安全功能,现在默认对所有复制连接启用加密。通过此配置更改,CHANGE REPLICATION SOURCE TO 语句中 SOURCE_SSL 选项的默认值已更改为 1,group_replication_ssl_mode 变量的默认值已更改为 REQUIRED,group_replication_recovery_use_ssl 变量的默认值已更改为 ON。

更多信息,请参见复制安全。(WL #16438)

为默认启用增强的复制功能,gtid_mode 的默认值已更改为 ON。此外,enforce_gtid_consistency 的默认值已从 ON 更改。

更多信息,请参见使用全局事务标识符进行复制。(WL #8602)

空间数据支持

几何函数现在支持在隐式 JSON 表示中包含 CRS URN,确保在将几何图形转换为 GeoJSON 时保留空间参考系信息。此增强功能使得能够在 JSON 二元视图中准确表示和更新几何值。它还会影响带有选项 2 和 4 的 ST_AsGeoJSON 函数,这些函数现在始终包含 CRS URN。通过此更新,从几何类型隐式转换生成的 GeoJSON 将具有额外的 "crs" 属性,提供更全面和准确的几何表示。

更多信息,请参见空间 GeoJSON 函数。(WL #16929)

sys 模式说明

存储过程 sys.ps_trace_thread 遇到的错误未得到正确处理。

感谢 Artem Avetian 的贡献。(Bug #34537707)

sys 模式的存储过程 revoke_schema_privileges_from_all_accounts_except() 现在默认安装。此过程使您能够撤销对某个模式的所有用户的权限,但定义的例外列表除外。

更多信息,请参见 revoke_schema_privileges_from_all_accounts_except() 过程。(WL #16996)

线程池说明

MySQL 线程池现在支持基于硬件的自动配置,允许它检测底层服务器硬件并设置**默认值以获得更好的性能。插件会根据系统上可用的 VCPU 数量自动调整其设置,用户仍然可以在需要时进行更改。此外,插件会自动验证并更正配置错误的参数,并在值被自动更正时记录警告。

受影响的系统变量如下:

●thread_pool_size

●thread_pool_max_transactions_limit

●thread_pool_query_threads_per_group

●thread_pool_algorithm

●thread_pool_max_unused_threads

(WL #16621)

已修复的 Bug

改进了 CREATE ... SELECT 语句的逻辑时钟处理,以确保副本中继日志中逻辑时钟值的准确性。(Bug #38383106)

对生成的 API 文档进行了若干更新。

感谢 Daniël van Eeden 的贡献。(Bug #38341735)

服务器有时会错误地处理表引用。(Bug #38001000)

下载地址

远程下载