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

07-14 1245阅读

作者: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版本都包含错误和安全修复,并被视为生产级质量。

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

          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支持的的平台

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

          以下是MySQL9.0下载的地址

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

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

          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.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
          

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

          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 登陆新增用户

          ## 临时密码登陆
          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;
          

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

          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;
          

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

          5.总结

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

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]