MySQL 8.4.0 LTS 变更解析:I_S 表、权限、关键字和客户端

↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~

MySQL 8.4.0 LTS 已经发布 ,作为发版模型变更后的第一个长期支持版本,注定要承担未来生产环境的重任,那么这个版本都有哪些新特性、变更,接下来少安将带大家一起来 get 新知识点。

INFORMATION_SCHEMA 变更

表 INFORMATION_SCHEMA.TABLESPACES 从 MySQL 8.0.22 开始被废弃,现已移除。

  • 8.4.0
mysql> select version()\G
*************************** 1. row ***************************
version(): 8.4.0-ShawnYan-debug
1 row in set (0.00 sec)

mysql> desc INFORMATION_SCHEMA.TABLESPACES;
ERROR 1109 (42S02): Unknown table 'TABLESPACES' in information_schema
  • 8.3.0
mysql> select version()\G
*************************** 1. row ***************************
version(): 8.3.0
1 row in set (0.01 sec)

mysql> desc INFORMATION_SCHEMA.TABLESPACES;
+--------------------+-----------------+------+-----+---------+-------+
| Field              | Type            | Null | Key | Default | Extra |
+--------------------+-----------------+------+-----+---------+-------+
| TABLESPACE_NAME    | varchar(64)     | NO   |     |         |       |
| ENGINE             | varchar(64)     | NO   |     |         |       |
| TABLESPACE_TYPE    | varchar(64)     | YES  |     |         |       |
| LOGFILE_GROUP_NAME | varchar(64)     | YES  |     |         |       |
| EXTENT_SIZE        | bigint unsigned | YES  |     |         |       |
| AUTOEXTEND_SIZE    | bigint unsigned | YES  |     |         |       |
| MAXIMUM_SIZE       | bigint unsigned | YES  |     |         |       |
| NODEGROUP_ID       | bigint unsigned | YES  |     |         |       |
| TABLESPACE_COMMENT | varchar(2048)   | YES  |     |         |       |
+--------------------+-----------------+------+-----+---------+-------+
9 rows in set (0.20 sec)

对于 InnoDB 表,Information Schema 中的表 INNODB_TABLESPACES 和 INNODB_DATAFILES 来提供表空间元信息。

mysql> table INFORMATION_SCHEMA.INNODB_TABLESPACES;
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
| SPACE      | NAME             | FLAG  | ROW_FORMAT           | PAGE_SIZE | ZIP_PAGE_SIZE | SPACE_TYPE | FS_BLOCK_SIZE | FILE_SIZE | ALLOCATED_SIZE | AUTOEXTEND_SIZE | SERVER_VERSION | SPACE_VERSION | ENCRYPTION | STATE  |
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
| 4294967294 | mysql            | 18432 | Any                  |     16384 |             0 | General    |          4096 |  26214400 |       26214400 |               0 | 8.4.0          |             1 | N          | normal |
| 4294967293 | innodb_temporary |  4096 | Compact or Redundant |     16384 |             0 | System     |          4096 |  12582912 |       12582912 |               0 | 8.4.0          |             1 | N          | normal |
| 4294967279 | innodb_undo_001  |     0 | Undo                 |     16384 |             0 | Undo       |          4096 |  16777216 |       16777216 |               0 | 8.4.0          |             1 | N          | active |
| 4294967278 | innodb_undo_002  |     0 | Undo                 |     16384 |             0 | Undo       |          4096 |  16777216 |       16777216 |               0 | 8.4.0          |             1 | N          | active |
|          1 | sys/sys_config   | 16417 | Dynamic              |     16384 |             0 | Single     |          4096 |    114688 |         114688 |               0 | 8.4.0          |             1 | N          | normal |
|          2 | yandb/t          | 16417 | Dynamic              |     16384 |             0 | Single     |          4096 |    114688 |         114688 |               0 | 8.4.0          |             1 | N          | normal |
+------------+------------------+-------+----------------------+-----------+---------------+------------+---------------+-----------+----------------+-----------------+----------------+---------------+------------+--------+
6 rows in set (0.00 sec)

mysql> table INFORMATION_SCHEMA.INNODB_DATAFILES;
+------------------------+----------------------+
| SPACE                  | PATH                 |
+------------------------+----------------------+
| 0x30                   | ibdata1              |
| 0x34323934393637323739 | ./undo_001           |
| 0x34323934393637323738 | ./undo_002           |
| 0x31                   | ./sys/sys_config.ibd |
| 0x32                   | ./yandb/t.ibd        |
+------------------------+----------------------+
5 rows in set (0.00 sec)

知识扩展

表 INNODB_TABLESPACES 和 INNODB_DATAFILES 自 MySQL 8.0.3 发生过表名变更,如果从 MySQL 5.7 升级上来,需要注意。

Old NameNew Name
INNODB_SYS_TABLESPACESINNODB_TABLESPACES
INNODB_SYS_DATAFILESINNODB_DATAFILES

权限变更

1. FLUSH_PRIVILEGES

MySQL 8.4.0 LTS 添加了特定于 FLUSH PRIVILEGES 语句的使用的权限。与现有的 RELOAD 权限不同,新的 FLUSH_PRIVILEGES 权限仅适用于 FLUSH PRIVILEGES 语句。此权限的范围是全局的,并且适用于用户和角色。

示例:

  1. 创建带有 FLUSH_PRIVILEGES 权限的用户。
mysql> create user u1;
Query OK, 0 rows affected (0.02 sec)

mysql> grant FLUSH_PRIVILEGES on *.* to u1;
Query OK, 0 rows affected (0.01 sec)

mysql> show grants for u1;
+-------------------------------------------+
| Grants for u1@%                           |
+-------------------------------------------+
GRANT USAGE ON *.* TO `u1`@`%`            |
GRANT FLUSH_PRIVILEGES ON *.* TO `u1`@`%` |
+-------------------------------------------+
2 rows in set (0.00 sec)
  1. 使用 u1 用户连接数据库。
mysql> select current_user()\G
*************************** 1. row ***************************
current_user(): u1@%
1 row in set (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec)
  1. 回收权限后再次使用 u1 刷新权限,执行报错,提示需要 RELOAD 或 FLUSH_PRIVILEGES 权限。
mysql> flush privileges;
ERROR 1227 (42000): Access denied; you need (at least one of) the RELOAD or FLUSH_PRIVILEGES privilege(s) for this operation

同时,RELOAD 权限将继续提供向后兼容性; 具有此权限的用户在升级后仍然可以执行 FLUSH PRIVILEGES 语句。作为升级到 MySQL 8.4 版本的一部分,将执行检查以查看是否有任何用户具有 FLUSH_PRIVILEGES 权限; 如果没有,则具有 RELOAD 权限的用户也会自动分配新权限。

2. OPTIMIZE_LOCAL_TABLE

MySQL 8.4.0 LTS 添加了新的 OPTIMIZE_LOCAL_TABLE 权限。

用户必须具有此权限才能执行 OPTIMIZE LOCAL TABLEOPTIMIZE NO_WRITE_TO_BINLOG TABLE 语句。

从以前的版本升级时,已具有 SYSTEM_USER 权限的用户将被自动授予 OPTIMIZE_LOCAL_TABLE 权限。

mysql> show grants;
+-----------------------------------------------+
| Grants for u1@%                               |
+-----------------------------------------------+
GRANT USAGE ON *.* TO `u1`@`%`                |
GRANT OPTIMIZE_LOCAL_TABLE ON *.* TO `u1`@`%` |
GRANT REFERENCES ON `yandb`.* TO `u1`@`%`     |
+-----------------------------------------------+
3 rows in set (0.00 sec)

mysql> OPTIMIZE LOCAL TABLE t;
+---------+----------+----------+-------------------------------------------------------------------+
| Table   | Op       | Msg_type | Msg_text                                                          |
+---------+----------+----------+-------------------------------------------------------------------+
| yandb.t | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| yandb.t | optimize | status   | OK                                                                |
+---------+----------+----------+-------------------------------------------------------------------+
2 rows in set (0.20 sec)

mysql> OPTIMIZE NO_WRITE_TO_BINLOG TABLE t;
+---------+----------+----------+-------------------------------------------------------------------+
| Table   | Op       | Msg_type | Msg_text                                                          |
+---------+----------+----------+-------------------------------------------------------------------+
| yandb.t | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| yandb.t | optimize | status   | OK                                                                |
+---------+----------+----------+-------------------------------------------------------------------+
2 rows in set (0.19 sec)

关键字

从 MySQL 8.0 到 8.4,增加了几个关键字,标记为(R)的是保留关键字:

AUTO, BERNOULLI, GTIDS, LOG, MANUAL (R), PARALLEL (R), PARSE_TREE, QUALIFY (R), S3, and TABLESAMPLE (R).

在准备升级数据库版本时,需要确认库、表有无使用到保留关键字,如果有建议先改名。

  • 确认 SCHEMA 名称没有使用保留关键字
with t as ( 
select 'manual' as rk 
union select 'parallel' 
union select 'qualify' 
union select 'tablesample' 
)
select SCHEMA_NAME from information_schema.SCHEMATA
where lower(SCHEMA_NAME) in (select rk from t);

示例输出:

+-------------+
| SCHEMA_NAME |
+-------------+
| manual      |
+-------------+
1 row in set (0.00 sec)
  • 确认 TABLE 名称没有使用保留关键字
with t as ( 
select 'manual' as rk 
union select 'parallel' 
union select 'qualify' 
union select 'tablesample' 
)
select table_schema, table_name, table_type 
from information_schema.tables 
where lower(table_schema) in (select rk from t) or lower(table_name) in (select rk from t);

示例输出:

+--------------+------------+------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
+--------------+------------+------------+
| yandb        | manual     | BASE TABLE |
| yandb        | manuaL     | VIEW       |
+--------------+------------+------------+
2 rows in set (0.00 sec)

客户端

  1. mysql_upgrade 移除

在之前的文章 MySQL 升级:使用 mysql_upgrade 注意事项(再见 mysql_upgrade) 中介绍过 mysql_upgrade 的变化。

MySQL 8.4.0 移除了该客户端。

  1. mysqlpump 移除

移除了已弃用的 mysqlpump 客户端,及其关联的 lz4_decompress 和 zlib_decompress 辅助工具。

请使用 mysqldump 或 MySQL Shell 的转储程式。

  1. mysqldump 新选项

mysqldump 新增选项 --output-as-version,用于确定与复制和时间相关的语句所使用的术语级别,从而创建兼容老版本的备份。

该选项有3个可选值,SERVER,BEFORE_8_0_23,BEFORE_8_2_0,默认为 SERVER

BEFORE_8_2_0 将输出已弃用的事件 DISABLE ON SLAVE 术语

BEFORE_8_0_23 将使用已弃用的 SLAVE/CHANGE MASTER 术语来表示复制命令

  1. 客户端注释保留

这里还有一个变更点值得注意。在之前的版本中,MySQL 客户端默认剥离注释。从 MySQL 8.1 开始,默认情况已更改为保留此类注释。

更多精彩

[MySQL]

  • 再见 mysql_upgrade
  • MySQL 8.1.0 已来!
  • 从鸟山明到 MySQL 5.7 EOL
  • MySQL Server 8.3.0 重要变更解析
  • MySQL 数据库认证考试介绍(2024 版)
  • 如何选择适合的 MySQL Connector/J 版本
  • MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)
  • MySQL 8.4.0 LTS 变更解析:InnoDB 参数默认值变化
  • MySQL 8.4.0 LTS 变更解析:MySQL 的复制与组复制
  • MySQL 8.4.0 LTS 变更解析:源码编译(类库变更)和密码插件

[Oracle]

  • Oracle 数据库全面升级为 23ai
  • python-oracledb 已率先支持 Oracle 23ai
  • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
  • SOP for Oracle 23ai:Python 连接 Oracle 的两种方法

-- / END / --

foot.png

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sui生态DeFi项目Cetus和Aftermath宣布启动孵化器

Sui DeFi中的去中心化交易所Cetus和Aftermath Finance联合Sui基金会宣布启动新的孵化器,为初创项目提供更多可行性途径。这两个DeFi项目在Sui上有着较长的历史,自去年一同与主网推出以来,目前在TVL方面位居前五。这两个项目的持久性和成功使它…

curl: (60) SSL certificate problem: self-signed certificat

目录: 1、背景2、测试结果 1、背景 今天帮忙客户排查问题,报错请求超时,但是ping客户的ip以及测试端口都是通的,最终不得不从中台服务器上发起请求客户回调接口,报错如下: 怀疑是客户的证书有问题&#xf…

C语言.数据结构.顺序表

1.顺序表的概念及结构 1.1线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,…

闲鱼电商运营高级课程,一部手机学会闲鱼开店赚钱(34节课)

课程目录 1,闲鱼更货出售主要核心原理.mp4 2、闲鱼前期开店准备.mp4 3.账号基础信息设置1.mp4 4、提升账号权重.mp4 5、注意避免违规行为.mp4 6、实接课 应该怎么选择爆款产品.mp4 7、分析商品的闲鱼市场.mp4 8、寻找最低价货源.mp4 9、怎么寻我优质的货源…

VOS3000被DDOS攻击后该怎么办

VOS3000遭受DDoS攻击的应对措施 当VOS3000遭受DDoS攻击时,可以采取以下几个步骤来应对: 立即启动防火墙:尽管难以完全阻止DDoS攻击,但防火墙可以在一定程度上帮助抵御攻击,减轻其造成的危害。 联系服务器提供商&#…

634 · 单词矩阵

链接&#xff1a;LintCode 炼码 - ChatGPT&#xff01;更高效的学习体验&#xff01; . - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; class Solution { public: struct Trie {Trie() {next.resize(26, nullptr);end false;} std::vector<Trie*> next; b…

视频监控技术前沿探索:智能化趋势与EasyCVR视频汇聚技术应用

在数字化时代的浪潮中&#xff0c;视频监控技术以其独特的优势&#xff0c;正在安防领域书写着新的篇章。它不仅为公共安全部门提供了强大的技术支持&#xff0c;还深入到教育、政府、娱乐、医疗、酒店、运动等多个领域&#xff0c;成为维护社会秩序、保障人民安全的重要工具。…

LearnOpenGL(二十)之立方体贴图

一、创建立方体贴图 首先&#xff0c;生成一个纹理&#xff0c;并将其绑定到纹理目标GL_TEXTURE_CUBE_MAP&#xff1a; unsigned int textureID; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 因为立方体贴图包含有6个纹理&#xff0…

Pytorch深度学习实践笔记3

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 视频来自【b站刘二大人】 目录 1 梯度下降&#…

【机器学习系列】使用高斯贝叶斯模型进行数据分类的完整流程

目录 一、导入数据 二、选择特征 三、十折交叉验证 四、划分训练集和测试集 五、训练高斯贝叶斯模型 六、预测测试集 七、查看训练集和测试集上的分数 八、查看混合矩阵 九、输出评估指标 一、导入数据 # 根据商户数据预测其是否续约案例 import pandas #读取数据到 da…

2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针

import java.util.Scanner;public class Main {static Scanner scnew Scanner(System.in);public static void main(String[] args) {int nsc.nextInt();//数组长度int tsc.nextInt();//操作次数int arr[]new int[n];char arr1[] new char[t];int arr2[] new int[t];int vis…

C++ RBTree封装mapset

目录 RBTreeNode的声明 RBTree结构 map结构 set结构 改造红黑树 迭代器类 迭代器成员函数 默认成员函数 Insert set map RBTreeNode的声明 template<class T> struct RBTreeNode {RBTreeNode<T>* _left;RBTreeNode<T>* _right;RBTreeNode<T>*…

非等值连接、等值连接、自然连接

目录 一、笛卡尔积 二、三种连接的关系 三、非等值连接 四、等值连接 五、自然连接 一、笛卡尔积 要理解非等值连接、等值连接、自然连接首先要理解笛卡尔积。 学过《离散数学》的应该很熟悉笛卡尔积。 简单来说&#xff0c;就是有两个集合&#xff0c;其中一个集合中的元…

第五十四周:文献阅读

目录 摘要 Abstract 文献阅读&#xff1a;基于经验模态分解的混合空气质量预测模型 现有问题 提出方法 方法论 1、扩展ARIMA模型 2、经验模态分解&#xff08;EMD&#xff09; 3、截断奇异值分解&#xff08;SVD&#xff09; SE-ARIMA模型 研究实验 1、数据集 2、评…

如何从U盘恢复误删除的文件

在许多情况下&#xff0c;用户可能会发现其U盘上的数据误删&#xff0c;并且无法访问或恢复它。在这篇文章中&#xff0c;我们将看到如何使用命令提示符尝试从U盘恢复损坏的文件和数据。我们还将列出一些免费的U盘恢复软件及其独特的功能&#xff0c;以便在前一种方法无法产生所…

北邮22级信通院DSP:用C++程序实现给定参数下四种滤波器的Butterworth模拟滤波器设计:给定上下截频和衰减系数求H(p)和H(s)

北邮22信通一枚~ 跟随课程进度更新北邮信通院DSP的笔记、代码和文章&#xff0c;欢迎关注~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院DSP_青山入墨雨如画的博客-CSDN博客 目录 一、 核心算法 1.1判断滤波器类型 1.2 带通滤波器BP 1.3带阻滤波器B…

分享:大数据风险检测报告,哪里查询比较好?

随着大数据技术的发展&#xff0c;逐渐被运用到各个领域&#xff0c;基于大数据技术的个人风险检测也就是我们常说的大数据报告在金融环境中运用的十分普遍&#xff0c;那大数据风险检测报告哪里查询比较好呢?本文就为大家简单介绍一下。 大数据风险检测报告查询能查到什么? …

Ubuntu coredump文件的生成并利用gdb查看报错位置

1.开启core文件生成 相关链接&#xff1a;gdb调试core dump使用 - 知乎 (zhihu.com) 相关链接&#xff1a;ubuntu | linux下程序崩溃生成coredump的方法_linux崩溃dump-CSDN博客 &#xff08;1&#xff09;ulimit -c unlimited &#xff08;2&#xff09;echo "/tmp/cor…

在ubuntu中关于驱动得问题:如何将nouveau驱动程序加入黑名单和安装NVIDIA显卡驱动

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、nouveau驱动程序加入黑名单二、安装NVIDIA显卡驱动 一、nouveau驱动程序加入黑名单 (1) 打开黑名单列表文件 终端输入&#xff1a; sudo gedit /etc/modprobe…

HarmonyOS开发之DevEco Studio安装

HUAWEI DevEco Studio是基于IntelliJ IDEA Community开源版本打造&#xff0c;为运行在HarmonyOS和OpenHarmony系统上的应用和服务&#xff08;以下简称应用/服务&#xff09;提供一站式的开发平台。 作为一款开发工具&#xff0c;除了具有基本的代码开发、编译构建及调测等功能…