0


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

作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理
微信:jem_db
QQ交流群:587159446
公众号:IT邦德

文章目录

前言

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

1.MySQL版本变更

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

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

2.MySQL9.0功能进化

2.1 添加或更改的功能

  1. 1.MySQL 9.0.0开始支持将
  2. EXPLAIN ANALYZEJSON输出保存到用户变量中
  3. EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt
  4. mysql> EXPLAIN FORMAT=JSON INTO @myupdate
  5. -> UPDATE a SET name2 = "garcia" WHERE id = 3;
  6. mysql> SELECT @myupdate, @mydelete\G
  7. *************************** 1. row ***************************
  8. @myupdate: {
  9. "query_block": {
  10. "select_id": 1,
  11. "table": {
  12. "update": true,
  13. "table_name": "a",
  14. "access_type": "range",
  15. "possible_keys": [
  16. "PRIMARY"
  17. ],
  18. "key": "PRIMARY",
  19. "used_key_parts": [
  20. "id"
  21. ],
  22. "key_length": "4",
  23. "ref": [
  24. "const"
  25. ],
  26. "rows_examined_per_scan": 1,
  27. "filtered": "100.00",
  28. "attached_condition": "(`db`.`a`.`id` = 3)"
  29. }
  30. }
  31. }
  1. 2.Event DDL in prepared statements
  2. MySQL 9.0提供了对服务器端准备语句的支持,那有什么好处呢?
  3. a.减少每次执行语句时解析语句的开销。
  4. 通常,数据库应用程序处理大量几乎相同的语句,
  5. 只更改子句中的文字或变量值,
  6. 如用于查询和删除的WHERE、用于更新的SET和用于插入的values
  7. b.防止SQL注入攻击。
  8. 参数值可以包含未加转义的SQL引号和分隔符。
  9. --使用方法如下:
  10. mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
  11. mysql> SET @a = 3;
  12. mysql> SET @b = 4;
  13. mysql> EXECUTE stmt1 USING @a, @b;
  14. +------------+
  15. | hypotenuse |
  16. +------------+
  17. | 5 |
  18. +------------+
  19. mysql> DEALLOCATE PREPARE stmt1;
  1. 3.新增2个性能架构系统变量表
  2. 1variables_metadata
  3. 提供了有关系统变量的一般信息。
  4. 这些信息包括MySQL服务器识别的每个系统变量的
  5. 名称、范围、类型、范围(如适用)和描述。
  6. 2global_variable_attributes
  7. 提供了有关服务器分配给全局系统变量的属性值对的信息。

2.2 弃用的功能

  1. 能架构variables_info表列的MIN_VALUEMAX_VALUE列现在已被弃用,
  2. 请使用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. 1.压缩包校验
  2. md5sum mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar
  3. 47c7bd2b1b987049450d8081497f84c4 mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar
  4. 2.解压
  5. tar -xvf mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar -C /home/mysql/
  6. 3.授权
  7. chown -R mysql:mysql /home/mysql/
  8. --安装以下四个即可
  9. mysql-community-common-9.0.0-1.el8.x86_64.rpm
  10. mysql-community-libs-9.0.0-1.el8.x86_64.rpm
  11. mysql-community-client-9.0.0-1.el8.x86_64.rpm
  12. mysql-community-server-9.0.0-1.el8.x86_64.rpm

3.4 正式安装

  1. 安装顺序:包之间相互依赖,所以必须注意安装顺序
  2. 先装 common
  3. 再装 libs
  4. 再装 client
  5. 最后装 server
  6. 注:root用户下操作
  7. [root@rhel8 ~]# cd /home/mysql
  8. rpm -ivh mysql-community-common-9.0.0-1.el8.x86_64.rpm
  9. rpm -ivh --force --nodeps mysql-community-libs-9.0.0-1.el8.x86_64.rpm
  10. rpm -ivh mysql-community-client-9.0.0-1.el8.x86_64.rpm --force --nodeps
  11. 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 登陆新增用户

  1. ## 临时密码登陆
  2. grep 'temporary password' /var/log/mysqld.log
  3. mysql -uroot -p
  4. ## 修改本地用户密码
  5. mysql> alter user root@'localhost' identified by 'root';
  6. Query OK, 0 rows affected (0.00 sec)
  7. mysql> flush privileges;
  8. Query OK, 0 rows affected (0.00 sec)
  9. mysql> select Host,User from mysql.user;
  10. +-----------+------------------+
  11. | Host | User |
  12. +-----------+------------------+
  13. | localhost | mysql.infoschema |
  14. | localhost | mysql.session |
  15. | localhost | mysql.sys |
  16. | localhost | root |
  17. +-----------+------------------+
  18. 4 rows in set (0.00 sec)
  19. ##新增远程登陆
  20. mysql> create user root@'%' identified by 'root';
  21. mysql> grant all on *.* to root@'%' with grant option;
  22. mysql> flush privileges;

4.向量及JSON体验

  1. mysql> create database testdb;
  2. mysql> use testdb;
  3. mysql>CREATE TABLE vector_json (
  4. id INT PRIMARY KEY,
  5. json_value JSON,
  6. vector_value vector
  7. );
  8. --插入向量及JSON
  9. INSERT INTO vector_json (id, json_value,vector_value)
  10. VALUES
  11. (1,
  12. JSON_ARRAY(1.0, 2.0, 3.0,4.0),
  13. to_vector('[1,2,3,4]')
  14. );
  15. select
  16. id,
  17. json_value,
  18. VECTOR_DIM(vector_value)
  19. from vector_json;

5.总结

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

标签: mysql 数据库

本文转载自: https://blog.csdn.net/weixin_41645135/article/details/140118654
版权归原作者 IT邦德 所有, 如有侵权,请联系我们删除。

“MySQL 9.0创新版发布!功能又进化了!”的评论:

还没有评论