【MySQL】MySQL8.1.0版本正式发布带来哪些新特性?

news2024/11/29 12:31:41

文章目录

  • 前言
  • 一、畅谈新版本
  • 二、8.1.0版本部署
    • 2.1、环境准备
    • 2.2、配置yum安装依赖
    • 2.3、用户及目录创建
    • 2.4、创建用户及组
    • 2.5、解压缩包
    • 2.6、环境变量配置
    • 2.7、创建参数文件
    • 2.8、数据库初始化
    • 2.9、启动Mysql
    • 2.10、登陆MySQL 8.1
  • 三、新特性
    • 3.1、密码参数
    • 3.2、错误日志加强
    • 3.3、二进制日志
    • 3.4、审计日志
    • 3.5、组复制增强
    • 3.6、废弃特性

前言

2023年7月18日晚,MySQL官方网站正式发布了MySQL8.1.0与8.0.34版本.

一、畅谈新版本

Oracle 每季度发布一次 MySQL 更新,所以自己也一直留意的官网的动态,2023年7月18日晚,MySQL官方网站正式发布了MySQL8.1.0与8.0.34版本,8.1的应该来说是8.0版本的bug修复,这是 MySQL 变更发版模型后的第一个创新版本 (Innovation Release)。MySQL 8.0.34+ 将成为仅错误修复版本(红色)。MySQL大约每2年发布一个新的长期支持版本(如下图蓝色),一个例外是8.x LTS版本,它将在 8.0 的 EOL 之前发生,按照此规则来说,下一个(创新)版本将增加主版本号,如果 MySQL 8.4.0 是 8.x LTS 版本,那么 MySQL 9.0 将是下一个创新版本。

官方下载文档:https://dev.mysql.com/downloads/mysql/
官方指南:https://dev.mysql.com/doc/refman/8.1/en/

在这里插入图片描述

二、8.1.0版本部署

官方的下载渠道已开放,https://dev.mysql.com/downloads/mysql/,本次是基于RHEL8系统二进制安装方式的安装。
RPM包下载选择Linux - Generic,适配对应的操作系统GCC版本。

在这里插入图片描述

2.1、环境准备

  1. 操作系统
[root@jeames ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.1 (Ootpa)
  1. 关闭防火墙#
    查看防火墙是状态
[root@jeames ~]# systemctl status firewalld

关闭防火墙

[root@jeames ~]# systemctl stop firewalld

取消开机自启动

[root@jeames ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  1. selinux关闭
    修改参数文件/etc/sysconfig/selinux中SELINUX的值为disabled
[root@jeames ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

修改完成后需要重启服务器才生效

2.2、配置yum安装依赖

  1. 创建挂载路径
mkdir -p /mnt/cdrom
  1. 挂载系统镜像光盘到指定目录
#因为光盘的格式通常是iso9660,意思是/dev/sr0挂载在/mnt/cdrom目录上
mount -t iso9660 /dev/sr0 /mnt/cdrom
mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only.
  1. 修改yum源配置文件
    ##编辑rhel8-local.repo文件,加入以下内容
[root@jeames ~]# cd /etc/yum.repos.d
[root@jeames yum.repos.d]# rm -rf *
[root@jeames yum.repos.d]# vi rhel8-local.repo

[localREPO]
name=localhost8
baseurl=file:///mnt/cdrom/BaseOS
enable=1
gpgcheck=0

[localREPO_APP]
name=localhost8_app
baseurl=file:///mnt/cdrom/AppStream
enable=1
gpgcheck=0
  1. 配置好后重建本地缓存
yum clean all 
yum makecache 
yum repolist

5.安装MySQL 8.1版本二进制所需的依赖包

yum -y install libncurses*
yum -y install libaio
yum -y install perl perl-devel
yum -y install autoconf
yum -y install numactl.x86_64


##通过rpm -qa可以查询是否将依赖包安装成功
[root@jeames yum.repos.d]# rpm -qa libaio perl perl-devel autoconf \ numactl.x86_64 libncurses

2.3、用户及目录创建

注:可以部署多个实例,通过端口区分root 用户操作:

mkdir -p /mysql/data/mysql3306
mkdir -p /mysql/app/
mkdir -p /mysql/conf/
mkdir -p /mysql/data/mysql3306/pid/
mkdir -p /mysql/data/mysql3306/socket/
mkdir -p /mysql/data/mysql3306/log/
mkdir -p /mysql/data/mysql3306/binlog/
mkdir -p /mysql/data/mysql3306/errlog
mkdir -p /mysql/data/mysql3306/relaylog/
mkdir -p /mysql/data/mysql3306/slowlog/
mkdir -p /mysql/data/mysql3306/tmp/

2.4、创建用户及组

[root@jeames ~]# groupadd mysql
[root@jeames ~]# useradd -g mysql mysql
[root@jeames ~]# chown -R mysql:mysql /mysql
[root@jeames ~]# passwd mysql
Changing password for user mysql.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@jeames ~]# cat /etc/group | grep mysql
mysql❌1001:
[root@jeames ~]# cat /etc/passwd | grep mysql
mysql❌1001:1001::/home/mysql:/bin/bash

在这里插入图片描述

2.5、解压缩包

[root@jeames ~]# cd /opt
[root@jeames opt]# cp mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz /mysql/app
[root@jeames opt]# chown -R mysql:mysql /mysql

mysql用户操作

[root@jeames ~]# su - mysql
md5 值验证,保证下载到的软件包无破损无木马
[mysql@jeames ~]$ cd /mysql/app
[mysql@jeames app]$ ll
total 457200
-rw-r--r-- 1 mysql mysql 468170248 Jul 19 15:29 mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz
[mysql@jeames app]$ md5sum mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz
5285185fad2b4352c878380a741e29f0  mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz

解压软件包并重命名

[mysql@jeames app]$ tar xvf mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz
[mysql@jeames app]$ mv mysql-8.1.0-linux-glibc2.28-x86_64 mysql8.1.0

[mysql@jeames app]$ ll
total 457200
drwxrwxr-x 9 mysql mysql       129 Jul 19 15:31 mysql8.1.0
-rw-r--r-- 1 mysql mysql 468170248 Jul 19 15:29 mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz

2.6、环境变量配置

##mysql用户下操作
cat >> /home/mysql/.bash_profile << “EOF”
MYSQL_HOME=/mysql/app/mysql8.1.0
PATH=P A T H : PATH:PATH:HOME/.local/bin:H O M E / b i n : HOME/bin:HOME/bin:MYSQL_HOME/bin
EOF

环境变量生效

[mysql@jeames app]$ source ~/.bash_profile
[mysql@jeames app]$ which mysql
/mysql/app/mysql8.1.0/bin/mysql

2.7、创建参数文件

由于是二进制文件安装,数据库参数文件需要自己配置

cat >> /mysql/conf/my3306.cnf << "EOF"
[mysqld]
server_id = 8103306
default-storage-engine= InnoDB
basedir=/mysql/app/mysql8.1.0
datadir=/mysql/data/mysql3306/data/
socket=/mysql/data/mysql3306/socket/mysql.sock
log-error=/mysql/data/mysql3306/log/mysqld.log
pid-file=/mysql/data/mysql3306/pid/mysqld.pid
port=3306
default-time_zone='+8:00'
default_authentication_plugin=mysql_native_password # 加此参数可远程登陆
transaction_isolation=READ-COMMITTED
max_connections=1500
back_log=500
wait_timeout=1800
max_user_connections=800
innodb_buffer_pool_size=1024M
innodb_log_file_size=512M
innodb_log_buffer_size=40M
slow_query_log=ON
long_query_time=5
# log settings #
slow_query_log = ON
slow_query_log_file = /mysql/data/mysql3306/slowlog/slow3306.log
log_error = /mysql/data/mysql3306/errlog/err3306.log
log_error_verbosity = 3
log_bin = /mysql/data/mysql3306/binlog/mysql_bin
log_bin_index = /mysql/data/mysql3306/binlog/mysql_binlog.index
general_log_file = /data/mysql/mysql3306/generallog/general.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
expire_logs_days = 90
binlog_expire_logs_seconds = 2592000      #30d
long_query_time = 2
min_examined_row_limit = 100
log_throttle_queries_not_using_indexes = 1000
innodb_flush_log_at_trx_commit=1

EOF

2.8、数据库初始化

mysql用户操作:

mysqld --defaults-file=/mysql/conf/my3306.cnf --initialize --user=mysql --basedir=/mysql/app/mysql8.1.0 --datadir=/mysql/data/mysql3306/data/

注意:以上同一行执行

2.9、启动Mysql

[mysql@jeames app]$ mysqld_safe --defaults-file=/mysql/conf/my3306.cnf --user=mysql &

2.10、登陆MySQL 8.1

第一次登录 MySQL 时,需要到错误日志下找初始化密码,使用 socket 加密码登录进去后,无法查询任何东西,提示先要修改 root 密码.

[mysql@jeames ~]$ cat /mysql/data/mysql3306/errlog/err3306.log | grep password
[mysql@jeames ~]$ mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

[mysql@jeames ~]$ mysql -uroot -p  -P 3306 -S /mysql/data/mysql3306/socket/mysql.sock
mysql> status
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
  • 修改密码
mysql> alter user root@'localhost' identified by 'root';

mysql> status
--------------
mysql  Ver 8.1.0 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:          8
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         8.1.0
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:            /mysql/data/mysql3306/socket/mysql.sock
Binary data as:         Hexadecimal
Uptime:                 3 min 46 sec

Threads: 2  Questions: 8  Slow queries: 0  Opens: 398  Flush tables: 3  Open tables: 36  Queries per second avg: 0.035
  • 远程登陆设置
mysql> create user root@'%' identified with mysql_native_password by 'root';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to root@'%' with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,plugin from mysql.user;  
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| root             | %         | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.01 sec)

三、新特性

3.1、密码参数

增加了一个新的系统参数,用于限制用户改密码时的最少替换字符数。
validate_password.changed_characters_percentage,该值是百分比。

在这里插入图片描述

3.2、错误日志加强

随着 MySQL 服务器、插件和组件的启动和关闭消息的增加,关闭过程的日志记录得到了增强。这些消息现在也被记录为关闭连接。

这些附加功能应该有助于故障排除和调试问题,特别是在服务器需要很长时间才能关闭的情况下。

此版本引入了一系列新的消息,这些消息会在MySQL错误日志中记录,包括以下内容:
MySQLserver的启动和关闭日志消息,包括使用–initialize参数启动时的日志。
插件关闭阶段的启动和结束日志消息。
组件关闭阶段的启动和结束日志消息。
连接关闭阶段的开始和结束日志消息。
在强制断开连接后仍然活动的线程数量和ID的日志消息,这些线程可能会导致等待情况。

mysql> show variables like 'log_error';
+---------------+------------------------------------------+
| Variable_name | Value                                    |
+---------------+------------------------------------------+
| log_error     | /mysql/data/mysql3306/errlog/err3306.log |
+---------------+------------------------------------------+

3.3、二进制日志

libmysqlclient.so 共享库中添加了几个函数,使开发人员能够访问 MySQL server的二进制日志:
mysql_binlog_open()、mysql_binlog_fetch() 和 mysql_binlog_close()。

3.4、审计日志

审计日志可以指定库database存储JSON过滤表。
新增Audit_log_direct_writes系统变量,用于计算直接写入审计文件的次数。
MySQL企业审计使用临时缓冲区保存写入日志文件的查询事件数据。
然而,由于server可能无法为长查询分配额外内存,审计插件已经进行了优化,在JSON格式记录日志时,不再使用临时缓冲区。
MySQL企业审计现在支持使用调度程序组件来配置和执行定期任务,以刷新内存缓存。
mysql -u root -D database_name -p < audit_log_filter_linux_install.sql

3.5、组复制增强

添加了一些特定于组复制插件的状态变量,这些变量可以改进对网络不稳定的诊断和故障排除,
为每个组成员 (group member) 提供有关网络使用情况、控制消息和数据消息的统计信息。
作为这项工作的一部分,Performance Schema 的 replication_group_communication_information 表中添加了一个新列 MEMBER_FAILURE_SUSPICIONS_COUNT 。该列的内容被格式化为一个 JSON 数组,其键是组成员 ID,其值是该组成员被认为是可疑的次数。

3.6、废弃特性

以下功能在 MySQL 8.1 中已弃用,并且可能会在未来的系列中删除。如果显示替代方案,则应更新应用程序以使用它们。

  1. mysqlpump
    由于 MySQL 提供了具有相同或额外功能的 mysqldump 和 MySQL Shell 等其他方法来执行数据库转储和备份,
    mysqlpump 已经变得多余,现在已弃用。现在调用这个程序会产生一个警告。您应该记住,mysqlpump 可能会在 MySQL 的未来版本中被删除。

  2. binlog_format
    binlog_format 服务器系统变量现已弃用,并且可能会在 MySQL 的未来版本中删除。 与此变量关联的功能(更改二进制日志记录格式)也已被弃用。

    此更改的含义是,当删除 binlog_format 时,MySQL 服务器将仅支持基于行的二进制日志记录(MySQL 8.0 中的默认设置)。 因此,新安装应仅使用基于行 (Row) 的二进制日志记录,而使用基于语句或混合日志记录格式的现有安装应迁移到基于行的格式。

    系统变量 log_bin_trust_function_creators 和 log_statements_unsafe_for_binlog 仅在基于语句的日志记录上下文中有用,现在也已弃用,因此也将在 MySQL 的未来版本中删除。

    现在设置或选择刚才提到的任何变量的值都会引发警告。 (WL#13966,WL#15669)

  3. mysql_native_password
    mysql_native_password 身份验证插件现已弃用,并可能在 MySQL 的未来版本中删除。
    如果帐户尝试使用 mysql_native_password 作为身份验证方法进行身份验证,
    CREATE USER、ALTER USER 和 SET PASSWORD 操作现在会在服务器错误日志中插入弃用警告。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三章:内存

一、内存的基础知识二、内存管理的概念2.1 **内存空间的扩充技术**2.2 内存空间的分配与回收2.2.1 连续分配管理方式2.2.2 动态分区分配算法2.2.3 非连续分配管理方式2.2.3.1 **基本分页存储管理**2.2.3.2 基本地址变换结构2.2.3.3 具有快表的地址变换机构2.2.3.4 俩级页表2.2.…

使用更少数据训练更好的alpaca

概述 该论文的研究背景是指令微调在大型语言模型中取得了重要的成果&#xff0c;但现有的训练数据质量问题导致模型性能下降。 过去的方法主要是使用低质量的数据进行指令微调&#xff0c;这些数据中存在错误或无关的回答&#xff0c;导致结果误导和训练成本增加。该论文的方…

赫达转债,明电转02上市价格预测

赫达转债 基本信息 转债名称&#xff1a;赫达转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;6.0亿元。 正股名称&#xff1a;山东赫达&#xff0c;今日收盘价&#xff1a;18.72元&#xff0c;转股价格&#xff1a;17.4元。 当前转股价值 转债面值 / 转…

代码测试工具Fortify最新版本介绍及实操

代码测试工具是安全测试、代码审计中经常会用到的一款软件测试工具&#xff0c;支持超过27种语言&#xff0c;超过911,000个组件级API&#xff0c;覆盖810多个SAST漏洞分类。通过Fortify的安全编码规则库&#xff0c;可以定位漏洞根本原因&#xff0c;参考漏洞修复指南。Fortif…

社媒营销:如何使用多开浏览器管理多个Facebook账号?

社交媒体营销已成为企业推广产品和服务的重要渠道&#xff0c;目前很多人转战海外。截至目前为止&#xff0c;Facebook仍是全球最受欢迎社交媒体平台的第一名&#xff0c;是产品推广的好平台。 多个Facebook账号的优势&#xff1a; 备用账号 无论你是日常生活分享还是从事fb…

【JS】设置滚动属性默认自动滚动到底部(overflow:scroll;)

文章目录 核心代码应用场景 核心代码 设置滚动属性默认自动滚动到底部&#xff1a; // 获取设置了滚动属性的div标签 const div document.getElementById(conversationalDiv); // 设置滚动的顶点坐标为滚动的总高度 div.scrollTop div.scrollHeight;应用场景 场景&#xff…

生命在于折腾——Obsidian笔记软件折腾记录(一)

一、开端 我使用过很多笔记软件&#xff0c;OneNote-语雀-Notability-GoodNotes-印象笔记-有道云笔记。 不得不说&#xff0c;我一直想拥有一款满足以下条件的笔记软件&#xff1a; 买断制。&#xff08;符合以下所有条件我考虑订阅&#xff09;ipad可手写。icloud可同步。Ma…

OA系统增加会议

目录 一.前期准备工作 A.建立数据库会议信息类 B.建立增加会议的jsp界面 1.注意事项 2.存储路径图片展示 C.构建JS 1.构建addmetting.js 2.导入Layui的formSelects&#xff08;为了下拉框选择值做准备&#xff09; 二.实现绑定多功能下拉框dao方法 A.查询所有用户 绑…

【UE4 塔防游戏系列】10-防御塔升级

目录 效果 步骤 一、根据防御塔等级修改子弹伤害 二、根据防御塔等级修改子弹速度 三、根据防御塔等级修改检测半径 四、根据防御塔等级修改子弹颜色 五、根据防御塔等级修改换弹时间 效果 步骤 一、根据防御塔等级修改子弹伤害 1. 打开“TowerBaseBullet_Child”&…

C#安装.Net平台科学计算库Math.Net Numerics

工作的时候需要使用到C#的Math.Net库来进行计算。 Math.Net库涵盖的主题包括特殊函数&#xff0c;线性代数&#xff0c;概率模型&#xff0c;随机数&#xff0c;插值&#xff0c;积分&#xff0c;回归&#xff0c;优化问题等。 这里记录一下&#xff0c;安装Math.Net库的过程…

【广州华锐互动】VR商场超市火灾事故应急演练系统

VR商场超市火灾事故应急演练系统由广州华锐互动开发&#xff0c;是一种基于虚拟现实技术的消防演练系统&#xff0c;可以帮助商场管理者和员工在计算机上进行火灾逃生演练&#xff0c;提高应对火灾的能力和安全意识。 首先&#xff0c;VR技术可以提供逼真的三维场景&#xff0…

re学习(19)[ACTF新生赛2020]easyre1(UPX脱壳)

文章链接&#xff1a;BUUCTF在线评测 参考视频&#xff1a;B站 【新手教程三】小Z带你学习什么是ESP定律和什么是堆栈平衡 &#xff1f; - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn 题解&#xff1a; 工具脱壳 key"*F\"N,\"…

Element+Vue+OpenLayers webgis实战

WebGIS 信息系统-ElementVueOpenLayers ElementVueOpenLayers项目某校园的遥感影像作为底图多语言切换各种语言的配置文件自定义主题样式切换组件过渡动画 ElementVueOpenLayers项目 以 某校园的遥感影像作为底图 &#xff0c;通过OpenLayers将遥感影像加载到浏览器中&#…

Python的下载与安装教程

Python的下载安装 进入官网Python官网&#xff0c;主页如下 2.点击Downloads&#xff0c;下载最新版本的Python.目前是3.11.4 3.下载完成之后&#xff0c;打开安装包python-3.11.4-amd64.exe进行安装 因为我装了之前的版本&#xff0c;这里是Upgrade Now.正常情况是Instal…

提升车载娱乐体验;优化蓝牙通信,从MTU和连接参数着手

车载开发中&#xff0c;蓝牙通信是一项重要的技术&#xff0c;用于实现车辆与其他设备&#xff08;如手机、车载音响、传感器等&#xff09;之间的无线数据传输和通信。蓝牙通信在车载领域有多种应用&#xff0c;例如车辆诊断、音频播放、电话通话、导航信息传输等。 蓝牙通信…

高效利剑:利用 空号检测API 清洗客户数据

导言 在当今竞争激烈的商业环境中&#xff0c;拥有准确、可靠的客户数据是企业取得成功的关键。然而&#xff0c;不可避免地&#xff0c;客户数据库中会存在一些无效的电话号码&#xff0c;这可能导致市场的浪费和客户沟通的障碍。然而&#xff0c;现在有了一把高效利剑&#…

day03-python运算符的使用

常用运算符 算术运算符 运算符说明实例结果加112-减1-10*乘1*33/除法&#xff08;和数学中的规则一样&#xff0c;但是结果为浮点数&#xff09;4/22//整除&#xff08;只保留商的整数部分&#xff09;7 // 23%取余&#xff0c;求模&#xff0c;即返回除法的余数7 % 21**幂运…

深入理解Java虚拟机(四)虚拟机性能监控、基础故障处理工具

Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 给一个系统定位问题的时候&#xff0c;知识、经验是关键基础&#xff0c;数据是依据&#xff0c;工具是运用知识处理数据的手段。这里说的数据包括但…

酷开科技以内容为核心打造OTT大屏营销投放新体系

如何打造“因地制宜”的营销策略&#xff0c;围绕内容场景&#xff0c;搭建更具效能的OTT大屏营销投放体系&#xff1f;是一个值得思考的问题。 酷开科技OTT大屏营销&#xff0c; 以营销内容为核心、通过更加立体化的沟通模式&#xff0c;创新性整合和打通多元资源&#xff0c…

EXCEl——移除单元格中换行符

方法一&#xff1a;使用清除格式功能 步骤如下: 1.选中需要取消换行的单元格 2.在“开始"选项卡中找到"清除”功能&#xff0c;点击下拉菜单中的“清除格式" 3.这时单元格的换行就被取消了。 清除前效果图 清除后效果图 方法一&#xff1a;使用函数功能 步骤…