MySQL 9.0 风云再起:全面解析最新创新版发布!

2024-09-06 19:14:30 浏览数 (2)

MySQL 9.0.0 变更(2024-07-01,创新版本)

删除参数

身份验证 在 MySQL 8.0 中弃用的插件已被删除,并且服务器不再接受来自不具备相应能力的旧客户端程序的认证请求。为了向后兼容,MySQL 客户端仍然保留了一种方式,即将客户端端内建的认证插件转换为动态可加载的插件。

在 MySQL 8.0 中,默认的认证插件已更改为 caching_sha2_password(详见 Caching SHA-2 Pluggable Authentication)。这些改动导致以下服务器选项和变量被移除:

  • 服务器选项 --mysql-native-password
  • 服务器选项 --mysql-native-password-proxy-users
  • 服务器系统变量 default_authentication_plugin

废弃列

Performance Schema variables_info 表中的 min_value 和 max_value 列也已被废弃,并可能在未来的 MySQL 版本中移除。推荐使用 variables_metadata 表中的 min_value 和 max_value 列,这两者提供了相同的信息。

新增表

Performance Schema中添加了两张新表,具体如下:

  1. variables_metadata 表:提供关于系统变量的一般信息。这些信息包括每个 MySQL 服务器识别的系统变量的名称、作用域、类型、范围(适用时)、以及描述。
  2. global_variable_attributes 表:提供关于由服务器分配给全局系统变量的属性-值对的信息。

这些新表的引入旨在取代已废弃的 variables_info 表中的 min_value 和 max_value 列,为用户提供更准确和全面的系统变量信息。这些变更使得 MySQL 的性能模式能够更好地支持系统变量的管理和监控,有助于开发人员和管理员更好地理解和优化数据库的性能。

SQL 语法说明

代码语言:javascript复制
EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt

这个语法允许将分析查询语句的执行计划以 JSON 格式保存到名为 @variable 的用户变量中。随后可以将这个变量作为任何 MySQL JSON 函数的参数使用(参见 JSON Functions)

代码语言:javascript复制
示例:mysql> EXPLAIN FORMAT=JSON INTO @root select * from el_company_logo where company_id=1;
ysql> SELECT @root;{
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "0.35"
    },
    "table": {
      "table_name": "el_company_logo",
      "access_type": "ALL",
      "possible_keys": [
        "idx_company_id"
      ],
      "rows_examined_per_scan": 1,
      "rows_produced_per_join": 1,
      "filtered": "100.00",
      "cost_info": {
        "read_cost": "0.25",
        "eval_cost": "0.10",
        "prefix_cost": "0.35",
        "data_read_per_join": "1K"
      },
      "used_columns": [
        "id",
        "logo_image",
        "company_id",
        "create_user_id",
        "create_time"
      ],
      "attached_condition": "(`db1`.`el_company_logo`.`company_id` = 1)"
    }
  }
} |

下载地址

MySQL :: Download MySQL Community Server

安装依赖

代码语言:javascript复制
yum -y install lrzsz wget perl-Digest-MD5 numactl ncurses ncurses-devel openssl-devel bison gcc gcc-c   make

解压

代码语言:javascript复制
[root@test19-server08 ~]# tar xvf mysql-9.0.0-1.el8.x86_64.rpm-bundle.tar
-rw-r--r-- 1       7155 31415  15M Jun  9 22:19  mysql-community-client-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415  29M Jun  9 22:19  mysql-community-client-debuginfo-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 4.7M Jun  9 22:20  mysql-community-client-plugins-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 4.7M Jun  9 22:20  mysql-community-client-plugins-debuginfo-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 696K Jun  9 22:20  mysql-community-common-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 7.1M Jun  9 22:20  mysql-community-debuginfo-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415  21M Jun  9 22:20  mysql-community-debugsource-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 8.3M Jun  9 22:20  mysql-community-devel-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 2.3M Jun  9 22:20  mysql-community-icu-data-files-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 1.6M Jun  9 22:20  mysql-community-libs-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 1.5M Jun  9 22:20  mysql-community-libs-compat-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 2.9M Jun  9 22:20  mysql-community-libs-compat-debuginfo-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 2.7M Jun  9 22:21  mysql-community-libs-debuginfo-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415  62M Jun  9 22:21  mysql-community-server-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415  26M Jun  9 22:21  mysql-community-server-debug-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 161M Jun  9 22:21  mysql-community-server-debug-debuginfo-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 244M Jun  9 22:21  mysql-community-server-debuginfo-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415 351M Jun  9 22:22  mysql-community-test-9.0.0-1.el8.x86_64.rpm
-rw-r--r-- 1       7155 31415  29M Jun  9 22:23  mysql-community-test-debuginfo-9.0.0-1.el8.x86_64.rpm

安装

代码语言:javascript复制
rpm -ivh mysql-community-common-9.0.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-plugins-9.0.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-9.0.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-9.0.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-9.0.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-compat-9.0.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-9.0.0-1.el8.x86_64.rpm

初始化

代码语言:javascript复制
mysqld --initialize

目录授权

代码语言:javascript复制
chown mysql:mysql /var/lib/mysql -R

启动mysql

代码语言:javascript复制
/bin/systemctl start mysqld.service
/bin/systemctl status mysqld.service

显示mysql的随机密码

代码语言:javascript复制
输入:grep 'temporary password' /var/log/mysqld.log

运行 MySQL 安装安全脚本 (也可使用第9部手动操作,二者选其一)

为了加强 MySQL 的安全性,运行 mysql_secure_installation 脚本:

代码语言:javascript复制
shell > mysql_secure_installation
根据提示完成以下操作:
输入临时 root 密码
设置新的 root 密码
移除匿名用户
禁止 root 远程登录
移除测试数据库
重新加载权限表

修改密码

代码语言:javascript复制
修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'tMKmf3fdggim!vfdv1';
查看密码策略:SHOW VARIABLES LIKE 'validate_password%';
修改密码长度:set global validate_password.length=1;(长度)
修改密码等级:set global validate_password.policy=0;(等级)

0 人点赞