MySQL 9.0 以及各个版本发布的新功能
1.MySQL 9.0 创新版发布
Oracle 每季度发布一次 MySQL 更新,2024年7月1日推出了最新的 MySQL 9.0 创新版本。
MySQL发布模型分为两个主要轨道:LTS(长期支持)和创新。所有LTS和Innovation版本都包含错误和安全修复,并被视为生产级质量。
1.1 MySQL 9.0 功能进化
1.1.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表
提供了有关服务器分配给全局系统变量的属性值对的信息。
1.1.2 弃用的功能
能架构variables_info表列的MIN_VALUE和MAX_VALUE列现在已被弃用,
请使用variables_metadata表中具有相同名称的列
1.1.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服务器系统变量
1.2 二进制编译安装
下载地址:https://dev.mysql.com/downloads/mysql/
#! /bin/bash
#-----------------------------------------------------
#Author: XingYuyu
#Date: 2024-07-2
#Blog: http://8.141.4.74
#Filename: install_offline_mysql9.0_for_rocky9.sh
#Description: [在Rocky 8/9离线二进制安装mysql 9.0]
#-----------------------------------------------------
SRC_DIR=$(pwd)
#MYSQL='mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz'
#MYSQL='mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz'
MYSQL='mysql-9.0.0-linux-glibc2.28-x86_64.tar.xz'
MYSQL_ROOT_PASSWORD='123456'
COLOR='echo -e \E[01;31m'
END='\E[0m'
check () {
if [ $UID -ne 0 ]; then
$COLOR"当前用户不是root, 安装失败"$END
exit 1
fi
cd $SRC_DIR
if [ ! -e $MYSQL ]; then
$COLOR"缺少${MYSQL}文件"$END
$COLOR"请将相关软件放在${SRC_DIR}目录下"$END
exit
elif [ -e /usr/local/mysql ]; then
$COLOR"数据库已存在,安装失败"$END
exit
else
return
fi
}
install_mysql () {
$COLOR"开始安装MySQL数据库..."$END
yum -y -q install libaio numactl-libs
tar xf $MYSQL -C /usr/local/
MYSQL_DIR=$(echo $MYSQL | sed -nr 's/^(.*[0-9]).*/\1/p')
ln -s /usr/local/$MYSQL_DIR /usr/local/mysql
chown -R root.root /usr/local/mysql/
id mysql &> /dev/null || useradd -s /sbin/nologin -r mysql
echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
ln -s /usr/local/mysql/bin/* /usr/bin/
# Create MySQL configuration file
cat > /etc/my.cnf <<-EOF
[mysqld]
server-id=$(hostname -I | cut -d. -f4)
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOF
[ -d /data/mysql ] || mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
# Initialize MySQL Database
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql --datadir=/data/mysql
# Create systemd service file for MySQL
cat > /etc/systemd/system/mysqld.service <<-EOF
[Unit]
Description=MySQL Server
After=network.target
Wants=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql --socket=/data/mysql/mysql.sock
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
Restart=on-failure
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
EOF
# Reload systemd manager configuration
systemctl daemon-reload
# Enable mysqld service to start on boot
systemctl enable mysqld
# Start mysqld service
systemctl start mysqld
if [ $? -ne 0 ]; then
$COLOR"数据库启动失败,退出!"$END
exit
fi
sleep 3
/usr/local/mysql/bin/mysqladmin -uroot password "$MYSQL_ROOT_PASSWORD" &>/dev/null
$COLOR"数据库安装完成"$END
}
check
install_mysql
# 使用上面脚本安装 MySQL 9.0(前提:将安装包上传和脚本上传到同一目录下)
[root@Rocky9 src]# bash install_offline_mysql8.3_for_rocky9.sh
开始安装MySQL数据库...
Upgraded:
numactl-libs-2.0.16-3.el9.x86_64
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /etc/systemd/system/mysqld.service.
数据库安装完成
[root@Rocky9 src]#[root@Rocky9 src]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.0.0 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> status
--------------
mysql Ver 9.0.0 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 9
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 9.0.0 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /data/mysql/mysql.sock
Binary data as: Hexadecimal
Uptime: 29 sec
Threads: 2 Questions: 10 Slow queries: 0 Opens: 130 Flush tables: 3 Open tables: 46 Queries per second avg: 0.344
--------------
mysql>
1.2.1 新增用户
默认密码是:123456,可以在执行脚本前通过修改脚本中的变量来自定义数据库密码
MYSQL_ROOT_PASSWORD=‘123456’
# 修改本地用户密码
alter user root@'localhost' identified by 'xxxx';
# 刷新权限
flush privileges;
# 查询当前主机和用户
select Host,User from mysql.user;
# 新增远程登录用户
create user root@'10.0.0.%' identified by 'xxxx';
# 给创建的用户赋予权限
grant all on *.* to root@'10.0.0.%' with grant option;
flush privileges;
1.2.2 向量及 JSON 体验
mysql> create schema MyDb;
Query OK, 1 row affected (0.00 sec)
mysql> create table vector_json (id int primary key,json_value JSON,vector_value vector);
Query OK, 0 rows affected (0.02 sec)
mysql> 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]')
-> );
Query OK, 1 row affected (0.01 sec)
mysql> select
-> id,
-> json_value,
-> VECTOR_DIM(vector_value)
-> from vector_json;
+----+----------------------+--------------------------+
| id | json_value | VECTOR_DIM(vector_value) |
+----+----------------------+--------------------------+
| 1 | [1.0, 2.0, 3.0, 4.0] | 4 |
+----+----------------------+--------------------------+
1 row in set (0.00 sec)
mysql>
1.2.3 完整的/etc/my.cnf
由于是二进制文件安装,数据库参数文件需要自己配置
cat >> /etc/my.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
1.3 通过 yum 来安装 RPM 包的方式
# 安装依赖
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
# 添加用户、用户组
groupadd mysql
useradd -g mysql --no-create-home -s /sbin/nologin mysql
# 上传安装包并解压
mkdir /data/mysql -pv
tar -xf mysql-9.0.0-1.el9.x86_64.rpm-bundle.tar -C /data/mysql/
cd /data/mysql/
# 修改所属主,所属组
[root@Rocky9 data]# chown -R mysql:mysql /data/mysql/
# 安装下面四个即可
# 安装顺序:包之间相互依赖,所以必须注意安装顺序
✓ 先装 common
✓ 再装 libs
✓ 再装 client
✓ 最后装 server
rpm -ivh mysql-community-common-9.0.0-1.el9.x86_64.rpm
rpm -ivh mysql-community-libs-9.0.0-1.el9.x86_64.rpm
rpm -ivh mysql-community-client-9.0.0-1.el9.x86_64.rpm
rpm -ivh mysql-community-server-9.0.0-1.el9.x86_64.rpm
通过 yum 的方式来自动处理软件包的依赖关系
[root@Rocky9 mysql]# yum -y install mysql-community-*
Last metadata expiration check: 0:47:48 ago on Tue 02 Jul 2024 03:47:49 PM CST.
Dependencies resolved.
=================================================================================================================================================================================================================
Package Architecture Version Repository Size
=================================================================================================================================================================================================================
Installing:
mysql-community-client x86_64 9.0.0-1.el9 @commandline 3.0 M
mysql-community-client-debuginfo x86_64 9.0.0-1.el9 @commandline 22 M
mysql-community-client-plugins x86_64 9.0.0-1.el9 @commandline 1.4 M
mysql-community-client-plugins-debuginfo x86_64 9.0.0-1.el9 @commandline 2.7 M
mysql-community-common x86_64 9.0.0-1.el9 @commandline 581 k
mysql-community-debuginfo x86_64 9.0.0-1.el9 @commandline 8.8 M
mysql-community-debugsource x86_64 9.0.0-1.el9 @commandline 17 M
mysql-community-devel x86_64 9.0.0-1.el9 @commandline 7.3 M
mysql-community-icu-data-files x86_64 9.0.0-1.el9 @commandline 2.3 M
mysql-community-libs x86_64 9.0.0-1.el9 @commandline 1.5 M
mysql-community-libs-compat x86_64 9.0.0-1.el9 @commandline 1.4 M
mysql-community-libs-compat-debuginfo x86_64 9.0.0-1.el9 @commandline 2.5 M
mysql-community-libs-debuginfo x86_64 9.0.0-1.el9 @commandline 2.6 M
mysql-community-server x86_64 9.0.0-1.el9 @commandline 50 M
mysql-community-server-debug x86_64 9.0.0-1.el9 @commandline 24 M
mysql-community-server-debug-debuginfo x86_64 9.0.0-1.el9 @commandline 154 M
mysql-community-server-debuginfo x86_64 9.0.0-1.el9 @commandline 192 M
mysql-community-test x86_64 9.0.0-1.el9 @commandline 336 M
mysql-community-test-debuginfo x86_64 9.0.0-1.el9 @commandline 23 M
Upgrading:
[root@Rocky9 mysql]# rpm -qa | grep mysql
mysql-community-debugsource-9.0.0-1.el9.x86_64
mysql-community-debuginfo-9.0.0-1.el9.x86_64
mysql-community-client-plugins-9.0.0-1.el9.x86_64
mysql-community-common-9.0.0-1.el9.x86_64
mysql-community-libs-9.0.0-1.el9.x86_64
mysql-community-client-9.0.0-1.el9.x86_64
mysql-community-icu-data-files-9.0.0-1.el9.x86_64
mysql-community-server-9.0.0-1.el9.x86_64
mysql-community-server-debug-9.0.0-1.el9.x86_64
mysql-community-test-9.0.0-1.el9.x86_64
mysql-community-devel-9.0.0-1.el9.x86_64
mysql-community-libs-compat-9.0.0-1.el9.x86_64
mysql-community-client-debuginfo-9.0.0-1.el9.x86_64
mysql-community-client-plugins-debuginfo-9.0.0-1.el9.x86_64
mysql-community-libs-compat-debuginfo-9.0.0-1.el9.x86_64
mysql-community-libs-debuginfo-9.0.0-1.el9.x86_64
mysql-community-server-debug-debuginfo-9.0.0-1.el9.x86_64
mysql-community-server-debuginfo-9.0.0-1.el9.x86_64
mysql-community-test-debuginfo-9.0.0-1.el9.x86_64
[root@Rocky9 mysql]#
# 启动mysql
[root@Rocky9 mysql]# systemctl enable --now mysqld
[root@Rocky9 mysql]#
# 获取临时密码
[root@Rocky9 mysql]# cat /var/log/mysqld.log | grep temporary
2024-07-02T09:05:09.190201Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: J3E7ZjT8uc=/
[root@Rocky9 mysql]# mysql -uroot -p'J3E7ZjT8uc=/'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.0.0
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>alter user root@'localhost' identified by 'root';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 修改一下密码策略,也是不允许的,只能先改一下密码然后再修改策略
mysql> SET GLOBAL validate_password.policy = LOW;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
Query OK, 0 rows affected (0.01 sec)
mysql> SET GLOBAL validate_password.policy = LOW;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL validate_password.length = 6;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'validate_password%';
+-------------------------------------------------+-------+
| Variable_name | Value |
+-------------------------------------------------+-------+
| validate_password.changed_characters_percentage | 0 |
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 6 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+-------------------------------------------------+-------+
8 rows in set (0.00 sec)
2.MySQL 8.4.0 LTS 发布
从 MySQL 8.4.0 开始,mysql_native_password 认证插件默认不再启用。
若要启用,需要在MySQL启动的时候,添加–mysql-native-password=ON 参数;或在配置文件中设置 mysql_native_password=ON。MySQL 8.4,还调整了与 InnoDB 存储引擎相关的多个服务器系统变量的默认值
其余的一些变更,大家详细的阅读官网即可
安装方式参考上面9.0.
3.MySQL 8.3.0 发布
3.1 标签化 GTID
此增强功能使为特定事务组的GTID分配唯一名称成为可能。
例如,只需比较包含数据操作的事务的GTID,就可以很容易地将其与管理操作产生的事务区分开来。管理员现在可以将SET@gtid_next=AUTOMATIC:<TAG>或SET@gtid_next=<UUID>:<TAG>:NUMBER的
使用限制为所需的MySQL用户或角色集,以便只有与给定数据或操作域相关的用户才能提交具有指定标记的新事务。该版本新增了TRANSACTION_GTID_TAG权限,它允许设置 GTID 值,让管理员能够控制权限分配,优化事务管理。
3.2 JSON EXPLAIN 格式
- 添加了explain_json_format_version系统变量,以确定explain format=json语句使用的json输出格式的版本。
- 它允许管理员在EXPLAIN FORMAT=JSON命令中,在两种不同的 JSON 输出格式之间进行选择。
- 这一特性保证了软件与 MySQL 优化器未来版本的兼容性,增强了长期使用的便利性
3.3 身份验证说明
Microsoft Windows:Windows平台现在支持执行基于sasl的ldap身份验证的服务器端authentication_ldap_sasl插件。
这意味着Windows客户端程序现在可以使用GSSAPI和Kerberos,使用authentication_ldap_sasl_client插件进行身份验证。
3.4 可插拔身份验证
从本版本开始,调试PAM身份验证插件时使用的 AUTHENTICATION_PAM_LOG 环境变量的行为更改如下:
将AUTHENTICATION_PAM_LOG设置为任意值(除非下一项中另有说明),其诊断消息中不再包含密码。
要在诊断消息中包括密码,请设置AUTHENTICATION_PAM_LOG=PAM_LOG_WITH_SECRET_INFO
3.5 线程池新增信息
在MySQL性能架构中添加了额外的线程池连接信息,如下所示:
添加了一个tp_connections表,其中包含有关每个线程池连接的信息。将以下列添加到tp_thread_state表中:
TIME_OF_ATTACH、
MARKED_STALLED、
state、EVENT_COUNT、
ACCUMULATED_EVENT_TIME、
EXEC_COUNT和ACCUMULATED_EXEC_TIME将以下列添加到tp_thread_group_state表中:
EFECTIVE_MAX_TRANSACTION_LIMIT、
NUM_QUERY_THREADS、
TIME_OF_LAST_thread_CREATION、
NUM_CONNECT_HANDLER_THREADD_IN_SLEEP、
THREADS_BOUND_to_TRANSACTION、
QUERY_THRADS_COUNT和TIME_OF_EARLIEST_CONN_EXPIRE
3.6 删减功能
- 一些关键的 C API 函数,比如mysql_kill()、mysql_list_fields()等,已被移除,建议采用其他方式来执行类似操作。
- 用于清理主机名内部缓存的FLUSH HOSTS命令(之前已经被弃用),也正式从系统中移除了。管理员现在需要通过其他方法来清理主机缓存。
- 还有一些复制和服务器的相关选项,例如–slave-rows-search-algorithms和–log_bin_use_v1_events也已被移除,引导管理员采用更有效、更现代的操作方法。
4.MySQL 8.1.0 发布
4.1 密码参数
增加了一个新的系统参数,用于限制用户改密码时的最少替换字符数。
validate_password.changed_characters_percentage,该值是百分比。
4.2 错误日志加强
随着 MySQL 服务器、插件和组件的启动和关闭消息的增加,关闭过程的日志记录得到了增强。这些消息现在也被记录为关闭连接。
这些附加功能应该有助于故障排除和调试问题,特别是在服务器需要很长时间才能关闭的情况下。此版本引入了一系列新的消息,这些消息会在MySQL错误日志中记录,包括以下内容:
MySQLserver的启动和关闭日志消息,包括使用–initialize参数启动时的日志。
插件关闭阶段的启动和结束日志消息。
组件关闭阶段的启动和结束日志消息。
连接关闭阶段的开始和结束日志消息。
在强制断开连接后仍然活动的线程数量和ID的日志消息,这些线程可能会导致等待情况。mysql> show variables like ‘log_error’;
±--------------±-----------------------------------------+
| Variable_name | Value |
±--------------±-----------------------------------------+
| log_error | /mysql/data/mysql3306/errlog/err3306.log |
±--------------±-----------------------------------------+
4.3 二进制日志
libmysqlclient.so 共享库中添加了几个函数,使开发人员能够访问 MySQL server的二进制日志:
mysql_binlog_open()、mysql_binlog_fetch() 和 mysql_binlog_close()。
4.4 审计日志
审计日志可以指定库database存储JSON过滤表。
新增Audit_log_direct_writes系统变量,用于计算直接写入审计文件的次数。
MySQL企业审计使用临时缓冲区保存写入日志文件的查询事件数据。
然而,由于server可能无法为长查询分配额外内存,审计插件已经进行了优化,在JSON格式记录日志时,不再使用临时缓冲区。MySQL企业审计现在支持使用调度程序组件来配置和执行定期任务,以刷新内存缓存。
mysql -u root -D database_name -p < audit_log_filter_linux_install.sql
4.5 组复制增强
添加了一些特定于组复制插件的状态变量,这些变量可以改进对网络不稳定的诊断和故障排除,
为每个组成员 (group member) 提供有关网络使用情况、控制消息和数据消息的统计信息。作为这项工作的一部分,Performance Schema 的 replication_group_communication_information 表中添加了一个新列 MEMBER_FAILURE_SUSPICIONS_COUNT 。该列的内容被格式化为一个 JSON 数组,其键是组成员 ID,其值是该组成员被认为是可疑的次数。
4.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 作为身份验证方法进行身份验证,
他方法来执行数据库转储和备份,
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 操作现在会在服务器错误日志中插入弃用警告。