MySQL 9.0创新版发布!功能又进化了!

CSDN 2024-10-07 11:07:19 阅读 64

作者:IT邦德

中国DBA联盟(ACDU)成员,10余年DBA工作经验,

Oracle、PostgreSQL ACE

CSDN博客专家及B站知名UP主,全网粉丝10万+

擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,

安装迁移,性能优化、故障应急处理

微信:jem_db

QQ交流群:587159446

公众号:IT邦德

文章目录

前言1.MySQL版本变更2.MySQL9.0功能进化2.1 添加或更改的功能2.2 弃用的功能2.3 删除的功能

3.MySQL9.0新版本体验3.1 安装依赖3.2 添加用户及组3.3 安装包上传解压3.4 正式安装3.5 初始化3.4 启动MySQL服务3.5 登陆新增用户

4.向量及JSON体验5.总结

前言

MySQL9.0创新版本已经正式发布,这次功能确实进化了不少!

1.MySQL版本变更

Oracle每季度发布一次MySQL更新,我平时也一直留意的官网的动态,2024年7月1推出了最新的 MySQL9.0创新版本.

MySQL发布模型分为两个主要轨道:LTS(长期支持)和创新。所有LTS和Innovation版本都包含错误和安全修复,并被视为生产级质量。

2.MySQL9.0功能进化

2.1 添加或更改的功能

<code>1.从MySQL 9.0.0开始支持将

EXPLAIN ANALYZE的JSON输出保存到用户变量中

EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt

mysql> EXPLAIN FORMAT=JSON INTO @myupdate

-> UPDATE a SET name2 = "garcia" WHERE id = 3;

mysql> SELECT @myupdate, @mydelete\G

*************************** 1. row ***************************

@myupdate: {

"query_block": {

"select_id": 1,

"table": {

"update": true,

"table_name": "a",

"access_type": "range",

"possible_keys": [

"PRIMARY"

],

"key": "PRIMARY",

"used_key_parts": [

"id"

],

"key_length": "4",

"ref": [

"const"

],

"rows_examined_per_scan": 1,

"filtered": "100.00",

"attached_condition": "(`db`.`a`.`id` = 3)"

}

}

}

2.Event DDL in prepared statements

MySQL 9.0提供了对服务器端准备语句的支持,那有什么好处呢?

a.减少每次执行语句时解析语句的开销。

通常,数据库应用程序处理大量几乎相同的语句,

只更改子句中的文字或变量值,

如用于查询和删除的WHERE、用于更新的SET和用于插入的values。

b.防止SQL注入攻击。

参数值可以包含未加转义的SQL引号和分隔符。

--使用方法如下:

mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';

mysql> SET @a = 3;

mysql> SET @b = 4;

mysql> EXECUTE stmt1 USING @a, @b;

+------------+

| hypotenuse |

+------------+

| 5 |

+------------+

mysql> DEALLOCATE PREPARE stmt1;

3.新增2个性能架构系统变量表

(1)variables_metadata表

提供了有关系统变量的一般信息。

这些信息包括MySQL服务器识别的每个系统变量的

名称、范围、类型、范围(如适用)和描述。

(2)global_variable_attributes表

提供了有关服务器分配给全局系统变量的属性值对的信息。

2.2 弃用的功能

能架构variables_info表列的MIN_VALUE和MAX_VALUE列现在已被弃用,

请使用variables_metadata表中具有相同名称的列

2.3 删除的功能

为了向后兼容,mysql_native_password在客户端上仍然可用,因此mysql 9.0客户端程序可以连接到早期版本的mysql服务器。在MySQL 9.0中,以前版本的客户端程序中内置的MySQL本地身份验证插件已转换为必须在运行时加载的插件。

其实从mysql 8.0中不推荐使用的mysql_native_password身份验证插件已被删除。

服务器现在拒绝来自不具有client_PLUGIN_AUTH

功能的旧客户端程序的mysql_native身份验证请求

由于此更改,9.0还删除了以下服务器选项和变量:

–mysql本机密码服务器选项

–mysql本机密码代理用户服务器选项

–default_authentication_plugin服务器系统变量

3.MySQL9.0新版本体验

以下是MySQL9.0支持的的平台

以下是MySQL9.0下载的地址

https://dev.mysql.com/downloads/mysql/

3.1 安装依赖

yum -y install lrzsz wget perl-Digest-MD5

yum -y install numactl

yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make

3.2 添加用户及组

groupadd mysql

useradd -g mysql -d /home/mysql mysql

passwd mysql

3.3 安装包上传解压

<code>1.压缩包校验

md5sum mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar

47c7bd2b1b987049450d8081497f84c4 mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar

2.解压

tar -xvf mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar -C /home/mysql/

3.授权

chown -R mysql:mysql /home/mysql/

--安装以下四个即可

mysql-community-common-9.0.0-1.el8.x86_64.rpm

mysql-community-libs-9.0.0-1.el8.x86_64.rpm

mysql-community-client-9.0.0-1.el8.x86_64.rpm

mysql-community-server-9.0.0-1.el8.x86_64.rpm

3.4 正式安装

安装顺序:包之间相互依赖,所以必须注意安装顺序

✓ 先装 common

✓ 再装 libs

✓ 再装 client

✓ 最后装 server

注:root用户下操作

[root@rhel8 ~]# cd /home/mysql

rpm -ivh mysql-community-common-9.0.0-1.el8.x86_64.rpm

rpm -ivh --force --nodeps mysql-community-libs-9.0.0-1.el8.x86_64.rpm

rpm -ivh mysql-community-client-9.0.0-1.el8.x86_64.rpm --force --nodeps

rpm -ivh mysql-community-server-9.0.0-1.el8.x86_64.rpm --force --nodeps

3.5 初始化

1.初始化

mysqld --initialize

2.授权

chown mysql:mysql /var/lib/mysql -R

3.4 启动MySQL服务

systemctl start mysqld

systemctl status mysqld

systemctl enable mysqld

3.5 登陆新增用户

<code>## 临时密码登陆

grep 'temporary password' /var/log/mysqld.log

mysql -uroot -p

## 修改本地用户密码

mysql> alter user root@'localhost' identified by 'root';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> select Host,User from mysql.user;

+-----------+------------------+

| Host | User |

+-----------+------------------+

| localhost | mysql.infoschema |

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

+-----------+------------------+

4 rows in set (0.00 sec)

##新增远程登陆

mysql> create user root@'%' identified by 'root';

mysql> grant all on *.* to root@'%' with grant option;

mysql> flush privileges;

4.向量及JSON体验

<code>mysql> create database testdb;

mysql> use testdb;

mysql>CREATE TABLE vector_json (

id INT PRIMARY KEY,

json_value JSON,

vector_value vector

);

--插入向量及JSON

INSERT INTO vector_json (id, json_value,vector_value)

VALUES

(1,

JSON_ARRAY(1.0, 2.0, 3.0,4.0),

to_vector('[1,2,3,4]')

);

select

id,

json_value,

VECTOR_DIM(vector_value)

from vector_json;

5.总结

Oracle每季度发布一次MySQL更新,让我持续关注MySQL的发展



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。