MySQL最新版8.1.0版本部署和新特性詳解
前言
2023年7月18日晚,MySQL官方網站正式發(fā)布了MySQL8.1.0與8.0.34版本.
一、暢談新版本
Oracle 每季度發(fā)布一次 MySQL 更新,所以自己也一直留意的官網的動態(tài),2023年7月18日晚,MySQL官方網站正式發(fā)布了MySQL8.1.0與8.0.34版本,8.1的應該來說是8.0版本的bug修復,這是 MySQL 變更發(fā)版模型后的第一個創(chuàng)新版本 (Innovation Release)。MySQL 8.0.34+ 將成為僅錯誤修復版本(紅色)。MySQL大約每2年發(fā)布一個新的長期支持版本(如下圖藍色),一個例外是8.x LTS版本,它將在 8.0 的 EOL 之前發(fā)生,按照此規(guī)則來說,下一個(創(chuàng)新)版本將增加主版本號,如果 MySQL 8.4.0 是 8.x LTS 版本,那么 MySQL 9.0 將是下一個創(chuàng)新版本。
官方下載文檔:https://dev.mysql.com/downloads/mysql/
官方指南:https://dev.mysql.com/doc/refman/8.1/en/

二、8.1.0版本部署
官方的下載渠道已開放,dev.mysql.com/downloads/
RPM包下載選擇Linux - Generic,適配對應的操作系統(tǒng)GCC版本。

2.1、環(huán)境準備
- 操作系統(tǒng)
[root@jeames ~]# cat /etc/redhat-release Red Hat Enterprise Linux release 8.1 (Ootpa)
- 關閉防火墻#
查看防火墻是狀態(tài)
[root@jeames ~]# systemctl status firewalld
關閉防火墻
[root@jeames ~]# systemctl stop firewalld
selinux關閉
修改參數文件/etc/sysconfig/selinux中SELINUX的值為disabled
[root@jeames ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
修改完成后需要重啟服務器才生效
2.2、配置yum安裝依賴
- 創(chuàng)建掛載路徑
mkdir -p /mnt/cdrom
- 掛載系統(tǒng)鏡像光盤到指定目錄
#因為光盤的格式通常是iso9660,意思是/dev/sr0掛載在/mnt/cdrom目錄上 mount -t iso9660 /dev/sr0 /mnt/cdrom mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only.
修改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
- 配置好后重建本地緩存
yum clean all yum makecache yum repolist
- 安裝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、用戶及目錄創(chuàng)建
注:可以部署多個實例,通過端口區(qū)分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、創(chuàng)建用戶及組
[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、環(huán)境變量配置
##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
環(huán)境變量生效
[mysql@jeames app]$ source ~/.bash_profile [mysql@jeames app]$ which mysql /mysql/app/mysql8.1.0/bin/mysql
2.7、創(chuàng)建參數文件
由于是二進制文件安裝,數據庫參數文件需要自己配置
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/
注意:以上同一行執(zhí)行
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、密碼參數
增加了一個新的系統(tǒng)參數,用于限制用戶改密碼時的最少替換字符數。
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 共享庫中添加了幾個函數,使開發(fā)人員能夠訪問 MySQL server的二進制日志:
mysql_binlog_open()、mysql_binlog_fetch() 和 mysql_binlog_close()。
3.4、審計日志
審計日志可以指定庫database存儲JSON過濾表。
新增Audit_log_direct_writes系統(tǒng)變量,用于計算直接寫入審計文件的次數。
MySQL企業(yè)審計使用臨時緩沖區(qū)保存寫入日志文件的查詢事件數據。
然而,由于server可能無法為長查詢分配額外內存,審計插件已經進行了優(yōu)化,在JSON格式記錄日志時,不再使用臨時緩沖區(qū)。
MySQL企業(yè)審計現在支持使用調度程序組件來配置和執(zhí)行定期任務,以刷新內存緩存。
mysql -u root -D database_name -p < audit_log_filter_linux_install.sql
3.5、組復制增強
添加了一些特定于組復制插件的狀態(tài)變量,這些變量可以改進對網絡不穩(wěn)定的診斷和故障排除, 為每個組成員 (group member) 提供有關網絡使用情況、控制消息和數據消息的統(tǒng)計信息。 作為這項工作的一部分,Performance Schema 的 replication_group_communication_information 表中添加了一個新列 MEMBER_FAILURE_SUSPICIONS_COUNT 。該列的內容被格式化為一個 JSON 數組,其鍵是組成員 ID,其值是該組成員被認為是可疑的次數。
3.6、廢棄特性
以下功能在 MySQL 8.1 中已棄用,并且可能會在未來的系列中刪除。如果顯示替代方案,則應更新應用程序以使用它們。
mysqlpump
由于 MySQL 提供了具有相同或額外功能的 mysqldump 和 MySQL Shell 等其他方法來執(zhí)行數據庫轉儲和備份,
mysqlpump 已經變得多余,現在已棄用?,F在調用這個程序會產生一個警告。您應該記住,mysqlpump 可能會在 MySQL 的未來版本中被刪除。binlog_format
binlog_format 服務器系統(tǒng)變量現已棄用,并且可能會在 MySQL 的未來版本中刪除。 與此變量關聯的功能(更改二進制日志記錄格式)也已被棄用。
此更改的含義是,當刪除 binlog_format 時,MySQL 服務器將僅支持基于行的二進制日志記錄(MySQL 8.0 中的默認設置)。 因此,新安裝應僅使用基于行 (Row) 的二進制日志記錄,而使用基于語句或混合日志記錄格式的現有安裝應遷移到基于行的格式。
此更改的含義是,當刪除 binlog_format 時,MySQL 服務器將僅支持基于行的二進制日志記錄(MySQL 8.0 中的默認設置)。 因此,新安裝應僅使用基于行 (Row) 的二進制日志記錄,而使用基于語句或混合日志記錄格式的現有安裝應遷移到基于行的格式。
系統(tǒng)變量 log_bin_trust_function_creators 和 log_statements_unsafe_for_binlog 僅在基于語句的日志記錄上下文中有用,現在也已棄用,因此也將在 MySQL 的未來版本中刪除。 現在設置或選擇剛才提到的任何變量的值都會引發(fā)警告。 (WL#13966,WL#15669)mysql_native_password
mysql_native_password 身份驗證插件現已棄用,并可能在 MySQL 的未來版本中刪除。 如果帳戶嘗試使用 mysql_native_password 作為身份驗證方法進行身份驗證, CREATE USER、ALTER USER 和 SET PASSWORD 操作現在會在服務器錯誤日志中插入棄用警告。
以上就是MySQL最新版8.1.0版本部署和新特性詳解的詳細內容,更多關于MySQL8.1.0版本部署和新特性的資料請關注腳本之家其它相關文章!
相關文章
MySQL 8.0 之索引跳躍掃描(Index Skip Scan)
這篇文章主要介紹了MySQL 8.0 之索引跳躍掃描(Index Skip Scan)的相關資料,幫助大家學習MySQL8.0的新特性,感興趣的朋友可以了解下2020-10-10
Trae MySQL MCP 連接失敗(Fail to start)的
本文詳細介紹了使用Trae工具遠程訪問內網MySQL數據庫時遇到的啟動和認證兼容問題,并通過本地命令映射和環(huán)境變量注入的方式成功解決,具有一定的參考價值,感興趣的可以了解一下2026-01-01
Navicat Premium15連接云服務器中的數據庫問題及遇到坑
這篇文章主要介紹了Navicat Premium15連接云服務器中的數據庫問題及遇到坑,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
如何修改mysql數據庫的max_allowed_packet參數
本篇文章是對修改mysql數據庫的max_allowed_packet參數進行了詳細的分析介紹,需要的朋友參考下2013-06-06

