MySQL 8.0中新增的功能(一)

以下功能已经在MySQL 8.0中添加了:

数据字典

MySQL现在包含了一个事务性数据字典,用于存储关于数据库对象的信息。在先前的MySQL版本中,字典数据被存储在元数据文件和非事务表中。

原子数据定义语句(Atomic DDL)功能

原子DDL语句将与DDL操作相关联的数据字典更新、存储引擎操作和二进制日志写入合并为一个单独的原子事务。

升级过程

在先前的MySQL版本中,安装新版本的MySQL后,MySQL服务器在下一次启动时会自动升级数据字典表。然后,DBA需要手动调用mysql_upgrade命令来升级mysql模式中的系统表,以及其他模式中的对象,例如sys模式和用户模式。

自MySQL 8.0.16版本开始,服务器会执行先前由mysql_upgrade处理的任务。在安装新的MySQL版本后,服务器现在会在下一次启动时自动执行所有必要的升级任务,不再需要DBA手动调用mysql_upgrade命令。此外,服务器还会更新帮助表的内容(mysql_upgrade之前并未执行此操作)。新的--upgrade服务器选项提供了对服务器如何执行自动数据字典和服务器升级操作的控制权。

会话重用

MySQL服务器现在默认支持SSL会话重用,通过设置超时时间来控制服务器维护会话缓存的时间段,客户端可以在该时间段内请求新连接的会话重用。所有MySQL客户端程序都支持会话重用。

此外,现在C应用程序可以使用C API的功能来启用加密连接的会话重用。

安全和账户管理

这些增强功能的添加旨在提高安全性并在账户管理方面提供更大的数据库管理员 (DBA) 灵活性:

  • MySQL企业版现在提供基于组件的数据遮蔽和去识别功能,而不是基于MySQL 8.0.13引入的插件库。MySQL企业数据遮蔽和去识别组件支持多字节字符、存储在数据库表中的遮蔽字典以及几个新函数。
  • 在MySQL 8.0.33之前,MySQL企业审计使用mysql系统数据库作为过滤器和用户账户数据的持久存储。为了增强灵活性,新的audit_log_database服务器系统变量现在允许在服务器启动时指定全局模式命名空间中的其他数据库。mysql系统数据库是表存储的默认设置。
  • 现在,mysql系统数据库中的授权表是InnoDB(事务性)表。以前,它们是MyISAM(非事务性)表。授权表存储引擎的更改导致账户管理语句的行为也发生了相应的变化。以前,指定多个用户的账户管理语句(如CREATE USER或DROP USER)可能对某些用户成功,对其他用户失败。现在,每个语句都是事务性的,如果发生任何错误,则要么对所有指定的用户都成功,要么回滚并没有影响。如果语句成功,则写入到二进制日志中,但如果失败则不写入;在这种情况下,发生回滚并且没有进行任何更改。
  • 现在有一个新的caching_sha2_password身份验证插件可用。与sha256_password插件类似,caching_sha2_password使用SHA-256密码哈希实现,但使用缓存来处理连接时的延迟问题。它还支持更多的传输协议,并且不需要与OpenSSL链接以获取基于RSA密钥对的密码交换功能。
  • caching_sha2_password和sha256_password身份验证插件提供比mysql_native_password插件更安全的密码加密,并且caching_sha2_password比sha256_password提供更好的性能。由于caching_sha2_password具有这些优秀的安全性和性能特性,因此它现在是首选的身份验证插件,并且也是默认的身份验证插件,而不是mysql_native_password。
  • MySQL企业版SASL LDAP身份验证插件现在支持GSSAPI/Kerberos作为Linux上MySQL客户端和服务器的身份验证方法。这在Linux环境中非常有用,其中应用程序使用Microsoft Active Directory访问LDAP,并且默认启用了Kerberos。
  • MySQL企业版现在支持一种身份验证方法,允许用户使用Kerberos进行身份验证MySQL服务器,前提是适当的Kerberos票据可用或可以获取到。
  • MySQL现在支持角色,角色是一组命名的权限集合。可以创建和删除角色。可以向角色授予和撤销权限。可以将角色授予和从用户帐户中撤销。可以从授予给帐户的角色中选择适用的活动角色,并且可以在该帐户的会话期间进行更改。
  • MySQL现在引入了用户账户类别的概念,根据是否拥有SYSTEM_USER权限将系统用户和普通用户区分开来。
  • 在之前的版本中,无法授予全局适用于某些特定模式之外的权限。但如果启用了partial_revokes系统变量,现在可以实现这一点。
  • GRANT语句有一个"AS user [WITH ROLE]"子句,用于指定在执行语句时使用的权限上下文的附加信息。此语法在SQL级别可见,尽管其主要目的是通过使这些限制出现在二进制日志中,从而实现授权者权限被partial revokes所限制的统一复制。
  • MySQL现在维护有关密码历史的信息,可以限制重新使用先前的密码。数据库管理员可以要求在一定数量的密码更改或一段时间内,新密码不能从先前的密码中选择。可以全局或按帐户设置密码重用策略。
  • 现在可以要求通过指定要替换的当前密码来验证尝试更改帐户密码。这使得数据库管理员可以防止用户在未证明他们知道当前密码的情况下更改密码。可以全局或按帐户设置密码验证策略。
  • 现在允许账户拥有双重密码,这使得在复杂的多服务器系统中可以无需停机无缝进行分阶段的密码更改。
  • MySQL现在允许管理员配置用户账户,如果由于密码错误导致连续登录失败次数过多,则会导致账户被临时锁定。每个账户的要求失败次数和锁定时间都是可配置的。
  • MySQL现在支持FIPS模式,如果使用OpenSSL编译,并且在运行时有可用的OpenSSL库和FIPS对象模块。FIPS模式对加密功能施加条件,例如对可接受的加密算法的限制或对更长密钥长度的要求。
  • 现在,服务器用于新连接的TLS上下文可以在运行时重新配置。这个功能可能非常有用,例如,可以避免重新启动已经运行了很长时间且SSL证书已过期的MySQL服务器。
  • OpenSSL 1.1.1支持用于加密连接的TLS v1.3协议,而MySQL 8.0.16及更高版本也支持TLS v1.3,前提是服务器和客户端都是使用OpenSSL 1.1.1或更高版本编译的。
  • MySQL现在会将授予客户端对命名管道的访问控制设置为在Windows上进行成功通信所需的最低权限。新版本的MySQL客户端软件可以在没有任何额外配置的情况下打开命名管道连接。如果无法立即升级旧的客户端软件,可以使用新的named_pipe_full_access_group系统变量来给予Windows组打开命名管道连接所需的权限。完全访问组的成员资格应该受到限制并且是暂时的。
  • 以前,MySQL用户账户使用单一的身份验证方法进行服务器身份验证。从MySQL 8.0.27开始,MySQL支持多因素认证(MFA),可以创建具有最多三种身份验证方法的账户。MFA支持包括以下更改:
    • CREATE USER和ALTER USER语法已被扩展,允许指定多个身份验证方法。
    • 身份验证策略可以通过authentication_policy系统变量进行设置,该变量控制可以使用多少个因素以及每个因素允许的身份验证类型。这对于CREATE USER和ALTER USER语句中身份验证相关的子句的使用方式施加了限制。
    • 客户端程序现在具有新的--password1、--password2和--password3命令行选项,用于指定多个密码。对于使用C API的应用程序,mysql_options4() C API函数的新选项MYSQL_OPT_USER_PASSWORD可以实现相同的功能。
  • 此外,MySQL Enterprise Edition现在支持使用智能卡、安全密钥和生物识别读卡器等设备对MySQL服务器进行身份验证。该身份验证方法基于快速身份在线(FIDO)标准,并使用一对插件,即服务器端的authentication_fido和客户端端的authentication_fido_client。服务器端的FIDO身份验证插件仅包含在MySQL Enterprise Edition发行版中,不包含在MySQL社区发行版中。然而,客户端插件包括在所有发行版中,包括社区发行版。这使得来自任何发行版的客户端都能够连接到加载了服务器端插件的服务器上。
  • 多因素认证可以使用现有的MySQL身份验证方法,新的FIDO身份验证方法,或两者的组合。
相关推荐
菲兹园长8 分钟前
表的设计(MYSQL)
数据库·mysql
Java Fans24 分钟前
MySQL数据库常用命令大全(完整版——表格形式)
数据库·mysql
白萝卜弟弟40 分钟前
【MySQL】MySQL函数之JSON_EXTRACT
数据库·mysql·json
gjh120841 分钟前
MySQL常见面试题
数据库·mysql
我的K84091 小时前
Flink整合Hive、Mysql、Hbase、Kafka
hive·mysql·flink
little_kid_pea2 小时前
MySQL Workbench导入数据比mysql命令行慢
数据库·mysql
苹果醋33 小时前
C语言 strlen 函数 - C语言零基础入门教程
java·运维·spring boot·mysql·nginx
爪哇学长3 小时前
解锁数据世界:从基础到精通的数据库探索之旅
数据库·mysql·oracle
码哥字节3 小时前
重生之从零设计 MySQL 架构
数据库·mysql·架构
地图之家家长8 小时前
19.(开发工具篇mysql库)mysql锁表问题解决
数据库·mysql