请看完,MySQL9.0创新版发布,功能又进化了!
作者: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 添加或更改的功能
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 安装包上传解压
1.压缩包校验
md5sum mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar
47c7bd2b1b987049450d8081497f84c4 mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar2.解压
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 --initialize2.授权
chown mysql:mysql /var/lib/mysql -R
3.4 启动MySQL服务
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
3.5 登陆新增用户
## 临时密码登陆
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体验
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的发展