暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL8.4.0安装部署_二进制方式

原创 董小姐 2024-05-07
3494

本节介绍如何在Unix/Linux平台上从压缩的tar文件二进制发行版安装MySQL。

Oracle提供了一组MySQL的二进制发行版。其中包括适用于许多平台的压缩tar文件(扩展名为 .tar.xz 的文件)形式的通用二进制发行版,以及适用于选定平台的特定于平台的软件包格式的二进制文件。

MySQL压缩的tar文件二进制发行版的名称格式为 mysql-VERSION-OS.tar.xz ,其中 VERSION 是一个数字(例如 8.4.0 ), OS 表示发行版所针对的操作系统类型(例如 pc-linux-i686 或 winx64 )。

MySQL8.4.0特性说明

以下整理了常用的功能变化,详细内容查阅官方文档,官方文档位置:https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html

新增功能

MySQL本地密码验证更改

从MySQL 8.4.0开始,默认情况下不再启用已弃用的 mysql_native_password 身份验证插件。要启用它,请使用 --mysql-native-password=ON (在MySQL 8.4.0中添加)启动服务器,或者在MySQL配置文件的 [mysqld] 部分中包含 mysql_native_password=ON (在MySQL 8.4.0中添加)。

InnoDB系统变量默认值更改

InnoDB系统变量默认值更改。在MySQL 8.4.0中,与 InnoDB 存储引擎相关的多个服务器系统变量的默认值发生了更改,如下表所示:

InnoDB System Variable Name
InnoDB系统变量名

New Default Value (MySQL 8.4)
新默认值(MySQL 8.4)

Previous Default Value (MySQL 8.0)
默认值(MySQL 8.0)

innodb_buffer_pool_in_core_file

OFF if MADV_DONTDUMP is supported, otherwise ON
如果支持 MADV_DONTDUMP ,则为 OFF ,否则为 ON

ON

innodb_buffer_pool_instances

If innodb_buffer_pool_size <= 1 GiB, then innodb_buffer_pool_instances=1
如果 innodb_buffer_pool_size <= 1 GiB,则 innodb_buffer_pool_instances=1

If innodb_buffer_pool_size > 1 GiB, then this is the minimum value from the following two calculated hints in the range of 1-64:
如果 innodb_buffer_pool_size > 1 GiB,则这是在1-64范围内的以下两个计算提示的最小值:

  • Buffer pool hint: Calculated as 1/2 of (innodb_buffer_pool_size / innodb_buffer_pool_chunk_size)
    缓冲池提示:按( innodb_buffer_pool_size / innodb_buffer_pool_chunk_size )的1/2计算
  • CPU hint: Calculated as 1/4 of the number of available logical processors
    CPU提示:计算为可用逻辑处理器数量的1/4

8 (or 1 if innodb_buffer_pool_size

< 1 GiB)
8(或1,如果 innodb_buffer_pool_size < 1 GiB)

innodb_change_buffering

none

all

innodb_dedicated_server

If ON[a]

, the value of innodb_flush_method

is no longer changed as in MySQL 8.0, but the calculation of innodb_redo_log_capacity

is changed from memory-based to CPU-based. For more information, see Section 17.8.12, “Enabling Automatic Configuration for a Dedicated MySQL Server”

.
如果是 ON [a] ,则 innodb_flush_method 的值不再像MySQL 8.0那样改变,但 innodb_redo_log_capacity 的计算从基于内存改为基于CPU。有关更多信息,请参见第17.8.12节“为专用MySQL服务器启用自动配置”。

OFF
变量的实际默认值为 OFF

innodb_adaptive_hash_index

OFF

ON

innodb_doublewrite_files

2

innodb_buffer_pool_instances

* 2

innodb_doublewrite_pages

128

innodb_write_io_threads

, which meant a default of 4
innodb_write_io_threads ,表示默认值为4

innodb_flush_method

on Linux innodb_flush_method 在Linux上

O_DIRECT if supported, otherwise fsync
O_DIRECT 如果支持,否则 fsync

fsync

innodb_io_capacity

10000

200

innodb_io_capacity_max

2 * innodb_io_capacity

2 * innodb_io_capacity

, with a minimum default value of 2000
2 * innodb_io_capacity ,最小默认值为2000

innodb_log_buffer_size

67108864 (64 MiB) 67108864(64 MiB)

16777216 (16 MiB) 16777216(16 MiB)

innodb_numa_interleave

ON

OFF

innodb_page_cleaners

innodb_buffer_pool_instances

4

innodb_parallel_read_threads

available logical processors / 8, with a minimum default value of 4
可用逻辑处理器/ 8,最小默认值为4

4

innodb_purge_threads

1 if available logical processors is <= 16, otherwise 4
如果可用逻辑处理器<= 16,则为1,否则为4

4

innodb_read_io_threads

available logical processors / 2, with a minimum default value of 4
可用逻辑处理器/ 2,最小默认值为4

4

innodb_use_fdatasync

ON

OFF

temptable_max_ram

3% of total memory, with a default value within a range of 1-4 GiB
总内存的3%,默认值范围为1-4 GiB

1073741824 (1 GiB) 1073741824(1 GiB)

temptable_max_mmap

0, which means OFF 0,表示 OFF

1073741824 (1 GiB) 1073741824(1 GiB)

temptable_use_mmap

OFF
在MySQL 8.0.26中弃用

ON

克隆插件

克隆插件。克隆插件版本控制要求被放宽,允许在同一系列的不同版本之间进行克隆。换句话说,只有主版本号和次版本号必须匹配,而以前点版本号也必须匹配

例如,克隆功能现在允许将8.4.0克隆到8.4.14,反之亦然。

MySQL复制

SOURCE_RETRY_COUNT变化

MySQL复制:SOURCE_RETRY_COUNT更改。 CHANGE REPLICATION SOURCE TO 语句的 SOURCE_RETRY_COUNT 选项的默认值已更改为10。这意味着,如果使用此选项和 SOURCE_CONNECT_RETRY 的默认值(60),复制副本将在两次重新连接尝试之间等待60秒,并在超时和故障切换之前以此速率继续尝试重新连接10分钟。

此更改也适用于已弃用的 --master-retry-count 服务器选项的默认值。(You应该使用 SOURCE_RETRY_COUNT 代替。)

标记的GTID

MySQL复制:标记的GTID。MySQL复制和组复制中使用的全局事务标识符(GID)的格式已经扩展,可以识别事务组,从而可以为属于特定事务组的GTID分配唯一的名称。例如,包含数据操作的事务可以通过比较它们的GTID容易地与由管理操作产生的事务区分开。

新的GTID格式是 UUID:TAG:NUMBER ,其中 TAG 是最多8个字符的字符串,通过将 gtid_next 系统变量的值设置为 AUTOMATIC:TAG (在此版本中添加)来启用(有关标记格式和其他信息,请参见变量的描述)。此标记对于当前会话中发起的所有事务都保持不变(除非使用 SET gtid_next 进行了更改),并在此类事务的提交时应用,或者在使用组复制时在认证时应用。也可以将 gtid_next 设置为 UUID:TAG:NUMBER ,以将单个事务的UUID设置为任意值,同时沿着为其分配自定义标记。 UUID 和 NUMBER 的分配与以前的MySQL版本相比没有变化。在任何一种情况下,用户都有责任确保标记对于给定的复制拓扑是唯一的。

将 gtid_next 设置为 AUTOMATIC:TAGUUID:TAG:NUMBER 需要一个新的 TRANSACTION_GTID_TAG 权限,该权限是在此版本中添加的;在原始服务器上以及副本应用程序线程的 PRIVILEGE_CHECKS_APPLIER 上都是如此。这也意味着管理员现在可以将 SET @gtid_next=AUTOMATIC:TAGUUID:TAG:NUMBER 的使用限制为所需的MySQL用户或角色集,以便只有与给定数据或操作域相关的用户才能提交具有分配的标记的新事务。

从MySQL的早期版本升级到MySQL 8.4时,任何已经拥有 BINLOG_ADMIN 权限的用户帐户或角色都会自动获得 TRANSACTION_GTID_TAG 权限。

弃用的功能

expire_logs_days

expire_logs_days系统变量。MySQL 8.0中不推荐使用的 expire_logs_days server系统变量已被删除。尝试在运行时获取或设置此变量,或使用等效选项( --expire-logs-days )启动mysqld,现在会导致错误。

使用 binlog_expire_logs_seconds 来代替 expire_logs_days ,它允许您指定(仅)整数天以外的到期期限。

删除的功能

Replication SQL syntax

复制SQL语法。MySQL复制中使用的一些SQL语句在MySQL的早期版本中被弃用,在MySQL 8.4中不再支持。现在,尝试使用这些语句中的任何一个都会产生语法错误。这些语句可以分为两组:与源服务器相关的语句和与副本相关的语句,如下所示:

作为这项工作的一部分, CREATE EVENT 和 ALTER EVENT 的 DISABLE ON SLAVE 选项现在已被弃用,并被 DISABLE ON REPLICA 取代。相应的术语 SLAVESIDE_DISABLED 现在也被弃用,并且不再用于事件描述中,例如在信息架构 EVENTS 表中;现在显示的是 REPLICA_SIDE_DISABLED 。

下面列出了已删除的与复制源服务器相关的语句:

此处列出了删除的与复制副本相关的SQL语句:

此处列出了从 START REPLICA 语句中删除的选项:

  • MASTER_LOG_FILE: Use SOURCE_LOG_FILE.
  • MASTER_LOG_POS: Use SOURCE_LOG_POS.

mysql_upgrade

mysql_upgrade实用程序,在MySQL 8.0.16中被弃用,已被删除。

mysqlpump

mysqlpump实用程序。mysqlpump实用程序沿着及其辅助实用程序lz4_blog和zlib_blog,在MySQL 8.0.34中已被删除。相反,使用mysqldump或MySQL Shell的转储实用程序。


参考链接:https://dev.mysql.com/doc/refm

an/8.4/en/mysql-nutshell.html

安装前准备

查看操作系统版本

--查看操作系统版本
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

--查看glib版本
[root@localhost ~]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

--查看cpu   x86_64架构
[root@localhost ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 166
Model name:            Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
Stepping:              0
....

MySQL8.4已不支持Linux7以下的操作系统,查看支持的平台,可查看官方文档,官方文档位置:https://www.mysql.com/support/supportedplatforms/database.html

选择要安装的MySQL版本

选择要安装的MySQL版本

在准备安装MySQL时,请决定使用哪个版本和分发格式(二进制或源代码)。

版本号了解:

MySQL 8.4中的命名方案使用由三个数字和一个可选后缀组成的版本名(例如,mysql—8.4.0)。版本名称中的数字解释如下:

第一个数字(8)是主版本号。

第二个数字(4)是次要版本号。LTS系列的次版本号不会更改,但Innovation系列的次版本号会更改。

第三个数字(0)是LTS系列中的版本号。对于每个新的LTS版本,此值递增,但对于创新版本,此值可能始终为0。

选择要安装的MySQL分发格式

选择安装哪个MySQL版本后,决定为您的操作系统安装哪个分发格式。

  • 二进制发行版以原生格式提供给许多平台,例如用于Linux的RPM包或用于macOS的DMG包。
  • 源代码发行版采用更通用的格式,如Zip存档或压缩的tar文件。
  • 在Windows上,您可以使用MSI来安装二进制发行版。

获取MySQL

下载后上传至/opt目录下

https://dev.mysql.com/downloads/mysql/

安装过程

创建mysql用户和组

若系统还没有用于运行mysqld的用户和组,需要创建它们。以下命令添加 mysql 组和 mysql 用户。

由于用户仅用于所有权目的而非登录目的,因此useradd命令使用 -r 和 -s /bin/false 选项来创建一个没有服务器主机登录权限的用户。如果您的useradd不支持这些选项,请忽略它们。

检查是否有mysqld的用户和组

--检查是否有mysqld的用户和组
[root@localhost ~]# id mysql
id: mysql: no such user

[root@localhost ~]# cat /etc/group | grep mysql
无返回

创建mysql用户和组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

解压安装介质

假定您具有在 /usr/local 中创建文件和目录的权限。如果该目录受保护,则必须以 root 方式执行安装。

cd /usr/local
tar -xvf /opt/mysql-8.4.0-linux-glibc2.17-x86_64.tar.xz -C /usr/local/

tar命令创建一个名为 mysql-VERSION-OS 的目录,如:mysql-8.4.0-linux-glibc2.17-x86_64。

补充:

如果您的tar不支持 xz 格式,请使用xz命令解压缩发行版,然后使用tar解压缩发行版。将前面的tar命令替换为以下替代命令

xz -dc /path/to/mysql-VERSION-OS.tar.xz | tar x

创建符号链接

创建一个指向tar创建的安装目录的符号链接

语法:ln -s full-path-to-mysql-VERSION-OS mysql

cd /usr/local
ln -s /usr/local/mysql-8.4.0-linux-glibc2.17-x86_64  mysql

配置环境变量

为了避免在使用MySQL时总是输入客户端程序的路径名,您可以将 /usr/local/mysql/bin 目录添加到 PATH 变量

vi /etc/profile
#add by mysql
export PATH=$PATH:/usr/local/mysql/bin

source /etc/profile

创建目录

mysql-files 目录提供了一个方便的位置,可用作 secure_file_priv 系统变量的值,该变量将导入和导出操作限制到特定目录。

cd /usr/local/mysql
mkdir mysql-files

目录授予权限

chown -R mysql:mysql /usr/local/mysql

初始化实例

默认数据目录位置:/var/lib/mysql

务必记录临时密码:temporary password is generated for root@localhost: uus7,ruoAv.*

cd /usr/local/mysql
bin/mysqld --initialize --user=mysql

以下是初始化实例的详细过程:

[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# bin/mysqld --initialize --user=mysql
2024-05-06T11:41:57.401726Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2024-05-06T11:41:57.404990Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a futurerelease.
2024-05-06T11:41:57.405398Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.4.0-linux-glibc2.17-x86_64/bin/mysqld (mysqld 8.4.0) initializing of server in progress as process 10447
2024-05-06T11:41:57.418368Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-05-06T11:41:58.725109Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-05-06T11:42:01.204080Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: uus7,ruoAv.*
2024-05-06T11:42:03.595866Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.

启动数据库

mysqld_safe具备后台运行的功能,关闭会话后进程不会中断。

cd /usr/local/mysql
bin/mysqld_safe --user=mysql &

问题处理

启动数据库报错

--问题描述
[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# bin/mysqld_safe --user=mysql &
[1] 10504
[root@localhost mysql]# 2024-05-06T11:43:19.842219Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
^C
[1]+  Exit 1                  bin/mysqld_safe --user=mysql

--解决办法
创建日志文件并赋予权限
[root@localhost mysql]# touch /var/log/mariadb/mariadb.log
[root@localhost mysql]# chown -R mysql:mysql /var/log/mariadb/mariadb.log

启动MySQL数据库
[root@localhost mysql]# bin/mysqld_safe --user=mysql &

启动数据库后无mysql进程

--问题描述
启动MySQL数据库
[root@localhost mysql]# bin/mysqld_safe --user=mysql &
[1] 10817
[root@localhost mysql]# 2024-05-06T11:46:51.500612Z mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
2024-05-06T11:46:51.526592Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2024-05-06T11:46:54.193827Z mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended
^C

查看进程  无MySQL进程,启动失败
[root@localhost mysql]# ps -ef | grep mysql
root      11197  10998  0 19:48 pts/3    00:00:00 grep --color=auto mysql

查看pid文件
[root@localhost mysql]# ls -l /var/run/mariadb/mariadb.pid
ls: cannot access /var/run/mariadb/mariadb.pid: No such file or directory

--解决办法
创建存放pid文件的目录并赋予权限
[root@localhost mysql]# mkdir -p /var/run/mariadb
[root@localhost mysql]# chown -R mysql:mysql /var/run/mariadb

启动MySQL数据库  启动成功
[root@localhost mysql]# bin/mysqld_safe --user=mysql &
[1] 11202
[root@localhost mysql]# 2024-05-06T11:49:59.184078Z mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
2024-05-06T11:49:59.206592Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

登录提示找不到sock文件

--问题描述
[root@localhost mysql]# mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

--解决办法
查看进程 找到sock文件位置
[root@localhost mysql]# ps -ef | grep mysql
root      11202   2539  0 19:49 pts/1    00:00:00 /bin/sh bin/mysqld_safe --user=mysql
mysql     11337  11202  0 19:49 pts/1    00:00:08 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

创建sock文件的软链接
[root@localhost mysql]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
登录成功

配置启动文件(可选)

[root@localhost mysql]# cd /usr/local/mysql
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

启动管理

#重启
service mysqld restart

#开启
service mysqld start

#关闭
service mysqld stop

或执行运行服务脚本mysqld或者mysql.server

#启动
/etc/init.d/mysqld start

#关闭
/etc/init.d/mysqld stop

#重启
/etc/init.d/mysqld restart

通用Unix/Linux二进制包的MySQL安装布局

Directory

Contents of Directory 目录内容

bin

mysqld server, client and utility programs
mysqld服务器、客户端和实用程序

docs

MySQL manual in Info format
MySQL手册信息格式

man

Unix manual pages Unix手册页

include

Include (header) files 包含(头)文件

lib

Libraries

share

Error messages, dictionary, and SQL for database installation
用于数据库安装的错误消息、字典和SQL

support-files

Miscellaneous support files
杂项支持文件

日常维护

更改root用户密码

use mysql;
FLUSH PRIVILEGES;
alter user 'root'@'localhost' identified with mysql_native_password by 'tophn@123';
FLUSH PRIVILEGES;

设置root用户密码永不过期

use mysql;
FLUSH PRIVILEGES;
alter user 'root'@'localhost'  password expire never;
FLUSH PRIVILEGES;

创建实现远程登录的root用户

use mysql;
create user 'root'@'%' identified with mysql_native_password by 'tophn@123';
alter user 'root'@'%'  password expire never;
FLUSH PRIVILEGES;
grant all privileges on *.*  to   'root'@'%' with grant option;
FLUSH PRIVILEGES;

创建实现远程登录同时指定登录范围的root用户(可选)

use mysql;
FLUSH PRIVILEGES;
create user 'root'@'192.168.16.%' identified with mysql_native_password by 'tophn@123';
grant all privileges on *.* to 'root'@'192.168.16.%'   with grant option;
alter user 'root'@'192.168.16.%'  password expire never;
FLUSH PRIVILEGES;

创建业务数据库及用户

create database operational_platform default charset utf8mb4  collate utf8mb4_general_ci;
flush privileges;
create user 'znfxpt'@'%' identified by 'tophn@123';
flush privileges;
grant all privileges on znfxpt_test.* to 'znfxpt'@'%' with grant option;
flush privileges;
alter user 'znfxpt'@'%' identified with mysql_native_password by 'tophn@123';
flush privileges;

创建查询用户

create user 'query_user'@'%' identified by 'tophn@123';
flush privileges;
grant select on 'znfxpt'.* to query_user@'%';
flush privileges;
最后修改时间:2024-05-08 11:33:29
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论