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中添加了两张新表,具体如下:
- variables_metadata 表:提供关于系统变量的一般信息。这些信息包括每个 MySQL 服务器识别的系统变量的名称、作用域、类型、范围(适用时)、以及描述。
- global_variable_attributes 表:提供关于由服务器分配给全局系统变量的属性-值对的信息。
这些新表的引入旨在取代已废弃的 variables_info 表中的 min_value 和 max_value 列,为用户提供更准确和全面的系统变量信息。这些变更使得 MySQL 的性能模式能够更好地支持系统变量的管理和监控,有助于开发人员和管理员更好地理解和优化数据库的性能。
SQL 语法说明
EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt
这个语法允许将分析查询语句的执行计划以 JSON 格式保存到名为 @variable 的用户变量中。随后可以将这个变量作为任何 MySQL JSON 函数的参数使用(参见 JSON Functions)
示例: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
安装依赖
yum -y install lrzsz wget perl-Digest-MD5 numactl ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
解压
[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
安装
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
初始化
mysqld --initialize
目录授权
chown mysql:mysql /var/lib/mysql -R
启动mysql
/bin/systemctl start mysqld.service
/bin/systemctl status mysqld.service
显示mysql的随机密码
输入:grep 'temporary password' /var/log/mysqld.log
运行 MySQL 安装安全脚本 (也可使用第9部手动操作,二者选其一)
为了加强 MySQL 的安全性,运行 mysql_secure_installation 脚本:
shell > mysql_secure_installation
根据提示完成以下操作:
输入临时 root 密码
设置新的 root 密码
移除匿名用户
禁止 root 远程登录
移除测试数据库
重新加载权限表
修改密码
修改密码: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;(等级)