暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

MySQL8.4.0安装部署__rpm方式

原创 董小姐 2024-05-08
908

本节介绍如何在Unix/Linux平台上rpm发行版安装MySQL。

仅适用于使用直接从Oracle下载的RPM包(而不是通过MySQL存储库)的安装过程。

安装环境:Centos7.9 x86_64

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/

服务器环境配置

/etc/sysctl.conf

cp /etc/sysctl.conf /etc/sysctl.conf_bak_20240507
cat >> /etc/sysctl.conf <<EOF
#add by mysql
#/proc/sys/kernel/优化
# 10000 connect remain:
kernel.sem = 250 162500 250 650	 

#notice: shall shmmax is base on 16GB, you may adjust it for your MEM
#TODO: open blow two paramenter may make error like this: can not fork xxxx, just reboot your computer ~

for 2GB Mem:
kernel.shmall = 419430								
kernel.shmmax = 171796918     

#for 4GB Mem:
#kernel.shmall = 838860								
#kernel.shmmax = 3435973836  

#for 8GB Mem:
#kernel.shmall = 1677721								
#kernel.shmmax = 6871947673  

#for 16GB Mem:
#kernel.shmall = 3774873								
#kernel.shmmax = 8589934592 

#for 32GB Mem:
#kernel.shmall = 7549747
#kernel.shmmax = 17179869184
#for 64GB Mem:
#kernel.shmall = 15099494
#kernel.shmmax = 34359738368
#for 128GB Mem:
#kernel.shmall = 30198988
#kernel.shmmax = 68719476736
#for 256GB Mem:
#kernel.shmall = 60397977
#kernel.shmmax = 137438953472
#for 512GB Mem:
#kernel.shmall = 120795955
#kernel.shmmax = 274877906944

kernel.shmmni = 4096		

vm.dirty_background_ratio=2 
vm.dirty_ratio = 40			

vm.overcommit_memory = 2	
vm.overcommit_ratio = 90 	

vm.swappiness = 0 				

fs.aio-max-nr = 1048576		
fs.file-max = 6815744		
fs.nr_open = 20480000       

# TCP端口使用范围
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 6000
# 记录的那些尚未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog = 65536
# 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.somaxconn=1024
net.core.netdev_max_backlog = 32768
net.core.wmem_default = 8388608
net.core.wmem_max = 1048576
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_syn_retries = 2
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem  = 32768 436600 873200
net.ipv4.tcp_mem = 94500000 91500000 92700000
net.ipv4.tcp_max_orphans = 3276800
EOF

/etc/security/limits.conf

cp /etc/security/limits.conf /etc/security/limits.conf_bak_20240507
cat >> /etc/security/limits.conf << "EOF"
#add by mysql
* soft  nproc   65536
* hard  nproc   65536
* soft  nofile  65536
* hard  nofile  65536
* soft  stack   10240
* hard  stack   32768
* soft core unlimited
* hard core unlimited
EOF

防火墙配置

     systemctl stop firewalld.service
     systemctl disable firewalld.service 
     #firewall-cmd --zone=public --add-port=2213/tcp --permanent
     #firewall-cmd --zone=public --add-port=22/tcp --permanent
     #firewall-cmd --reload
     #禁用防火墙区域偏移
     sed -i 's/^AllowZoneDrifting=yes/AllowZoneDrifting=no/' /etc/firewalld/firewalld.conf 

关闭 numa和禁用透明大页

sed -i "s/quiet/quiet numa=off transparent_hugepage=never/g"  /etc/default/grub 
grub2-mkconfig -o /etc/grub2.cfg

禁用selinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0 

配置yum环境(必须)

上传操作系统镜像至/opt目录下。rpm方式安装MySQL必须配置yum环境不然安装会提示报错。

mount /opt/CentOS-7-x86_64-DVD-1810.iso /mnt/
cat << EOF >> /etc/fstab
/dev/sr0    /mnt        iso9660 loop            0 0
EOF

mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat >> /etc/yum.repos.d/os.repo <<"EOF"
[OS1]
name=OS
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF

安装过程

某些包之间存在依赖关系。计划安装许多包,下载RPM包tar文件,其中包含上面列出的所有RPM包,这样就不需要单独下载它们。

--安装
yum install mysql-community-{server,client,client-plugins,icu-data-files,common,libs}-*

--查看已安装的MySQL的rpm包
[root@localhost mysqldb]# rpm -qa | grep mysql
mysql-community-client-plugins-8.4.0-1.el7.x86_64
mysql-community-libs-8.4.0-1.el7.x86_64
mysql-community-icu-data-files-8.4.0-1.el7.x86_64
mysql-community-server-debug-8.4.0-1.el7.x86_64
mysql-community-common-8.4.0-1.el7.x86_64
mysql-community-client-8.4.0-1.el7.x86_64
mysql-community-server-8.4.0-1.el7.x86_64
mysql-community-libs-compat-8.4.0-1.el7.x86_64

注意:rpm方式安装MySQL必须配置yum环境不然安装会提示报错。

安装还将在系统上创建一个名为 mysql 的用户和一个名为 mysql 的组。

MySQL不会在安装过程结束时自动启动

mysql 用户是使用useradd命令的 -r 和 -s /bin/false 选项创建的,因此它没有登录到您的服务器主机的权限(有关详细信息,请参阅创建mysql用户和组)。要在操作系统上切换到 mysql 用户,请使用su命令的 --shell=/bin/bash 选项:

su - mysql --shell=/bin/bash

使用旧版软件包安装MySQL的早期版本可能会创建一个名为 /usr/my.cnf 的配置文件。强烈建议您检查文件的内容,并将其中所需的设置迁移到文件 /etc/my.cnf 文件中,然后删除 /usr/my.cnf 。

目录规划

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

--创建存放rpm介质的目录
mkdir -p /topsoft/mysqldb

解压安装介质

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

--解压安装介质
tar -xvf /opt/mysql-8.4.0-1.el7.x86_64.rpm-bundle.tar -C /topsoft/mysqldb

--查看解压后的文件
[root@localhost opt]# ls -l /topsoft/mysqldb/
total 1012688
-rw-r--r--. 1 7155 31415  15319156 Apr 11 03:20 mysql-community-client-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   3624848 Apr 11 03:20 mysql-community-client-plugins-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415    705472 Apr 11 03:20 mysql-community-common-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 565343084 Apr 11 03:21 mysql-community-debuginfo-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   2022488 Apr 11 03:21 mysql-community-devel-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   4218804 Apr 11 03:21 mysql-community-embedded-compat-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   2346044 Apr 11 03:21 mysql-community-icu-data-files-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   1591356 Apr 11 03:21 mysql-community-libs-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415    686984 Apr 11 03:21 mysql-community-libs-compat-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415  63789924 Apr 11 03:21 mysql-community-server-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415  26371104 Apr 11 03:22 mysql-community-server-debug-8.4.0-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 350952856 Apr 11 03:23 mysql-community-test-8.4.0-1.el7.x86_64.rpm

组件说明:

Package Name 包名称

Summary

mysql-community-client

MySQL client applications and tools
MySQL客户端应用程序和工具

mysql-community-client-plugins

Shared plugins for MySQL client applications
MySQL客户端应用程序的共享插件

mysql-community-common

Common files for server and client libraries
服务器和客户端库的通用文件

mysql-community-devel

Development header files and libraries for MySQL database client applications
MySQL数据库客户端应用程序的开发头文件和库

mysql-community-embedded-compat

MySQL server as an embedded library with compatibility for applications using version 18 of the library
MySQL服务器作为一个嵌入式库,与使用该库版本18的应用程序兼容

mysql-community-icu-data-files

MySQL packaging of ICU data files needed by MySQL regular expressions
MySQL正则表达式所需ICU数据文件的MySQL打包

mysql-community-libs

Shared libraries for MySQL database client applications
MySQL数据库客户端应用程序的共享库

mysql-community-libs-compat

Shared compatibility libraries for previous MySQL installations; only present if previous MySQL versions are supported by the platform
以前MySQL安装的共享兼容性库;仅当平台支持以前的MySQL版本时才存在

mysql-community-server

Database server and related tools
数据库服务器和相关工具

mysql-community-server-debug

Debug server and plugin binaries
Linux服务器和插件二进制文件

mysql-community-test

Test suite for the MySQL server
MySQL服务器测试套件

mysql-community

The source code RPM looks similar to mysql-community-8.4.0-1.el7.src.rpm, depending on selected OS
源代码RPM看起来类似于mysql-community-8.4.0-1.el7.src.rpm,具体取决于所选的操作系统

Additional *debuginfo* RPMs
其他 *debuginfo* RPM

There are several debuginfo packages: mysql-community-client-debuginfo, mysql-community-libs-debuginfo mysql-community-server-debug-debuginfo mysql-community-server-debuginfo, and mysql-community-test-debuginfo.
有几个 debuginfo 包:mysql-community-client-debuginfo,mysql-community-libs-debuginfo mysql-community-server-debug-debuginfo mysql-community-server-debuginfo和mysql-community-test-debuginfo。

安装MySQL

cd /topsoft/mysqldb
yum install mysql-community-{server,client,client-plugins,icu-data-files,common,libs}-*

补充:

要只安装客户端程序,您可以跳过要安装的软件包列表中的 mysql-community-server 。

sudo yum install mysql-community-{client,client-plugins,common,libs}-*

安装后目录说明:

配置文件

备份原配置文件

--备份原配置文件
mv /etc/my.cnf /etc/my.cnf_bak_20240507

新配置文件

[root@localhost mysqldb]# cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.4/en/server-configuration-defaults.html

[client]
port = 2213
default-character-set = utf8mb4

[mysql]
# 设置mysql客户端默认字符集
default-character-set = utf8mb4
prompt="\\u@\\h :\\d \\R:\\m:\\s>" #设置命令行提示符

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#操作用户#
user=mysql

#字符集#
character-set-server = utf8mb4 #数据库默认字符集,注意不要再用utf8了
collation-server = utf8mb4_general_ci #数据库字符集对应一些排序规则,要属于character-set-server对应值的集合内
init_connect='SET NAMES utf8mb4' #设置client连接mysql时的字符集,防止乱码

#运行实例相关#
server_id = 103 #Mysql服务实例的唯一编号 每个mysql服务实例Id需唯一 可设置成ip最后一位
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

#二进制日志#
binlog_expire_logs_seconds=604800 #mysql binlog日志文件保存的过期时间7天,过期后自动删除;默认值是0,不限制,这样会占用空间太多 单位秒
max_binlog_size = 1G #限制单个文件大小,默认大小:1,073,741,824,即1G,太大了

#慢查询日志#
log_queries_not_using_indexes = 1 #把未使用到索引的sql记录到慢查询日志
slow_query_log = 1 #是否打开慢查询sql日志
long_query_time = 1 #慢查询执行的秒数,超过这个值则会被记录到慢查询日志


#增加临时表空间大小限制参数
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:1G

#时区#
default_time_zone="+8:00" #设置默认服务器时区
log_timestamps = system #解决日志中时间和本地差8小时

#认证策略解决登录ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded#
#default_authentication_plugin = mysql_native_password

mysql_native_password=ON


#性能参数#
open_files_limit = 65535
back_log=600 #连接数达到max_connections时,新来的请求将会被存在堆栈中。数量超过back_log,将不被授予连接资源
max_connections = 1000 #最大并发连接数,过小会影响连接的数量,报Too many connections错误,过大会导致服务资源用完无响应,最大值不能超过100000
max_user_connections=1000 #指同一个账号能够同时连接到mysql服务的最大连接数。设置为0表示不限制。
table_open_cache = 1024 #能同时打开表的个数
table_definition_cache = 1024
thread_stack = 512K
thread_cache_size = 1500
sort_buffer_size = 12M   #只是在需要的时候才分配,并且在那些操作做完之后就释放了
join_buffer_size = 12M
read_buffer_size = 24M  #读入缓冲区大小,对表进行顺序扫描时将分配1个读入缓冲区。对表的顺序扫描请求非常频繁,并且频繁扫描进行得太慢可增加。只是在需要的时候才分配,并且在操作结束后就释放
read_rnd_buffer_size = 8M  #随机读缓冲区大小,当按任意顺序读取行时(如:排序),将分配一个随机读缓存区。只是在需要的时候才分配,并且在那些操作做完之后就释放
bulk_insert_buffer_size = 4M
interactive_timeout = 600
wait_timeout = 600
tmp_table_size = 48M  #heap(堆积)表缓冲大小,提高联接查询速度。只是在需要的时候才分配,并且在那些操作做完之后就释放了
max_heap_table_size = 32M
binlog_cache_size = 12M
max_binlog_cache_size = 50M
key_buffer_size=256M  #索引缓冲区大小。内存在4GB左右的服务器该参数可设置为256M或384M

#库表名不区分大小写#
lower_case_table_names = 1

#数据安全#
innodb_flush_log_at_trx_commit = 2 #每次事务提交时,将存储引擎log buffer中的redo日志写入到log file,但并不会立即刷写到磁盘
innodb_log_buffer_size=64M  #将日志写入日志磁盘文件前的缓冲大小
innodb_redo_log_capacity=52428800

#最大允许的包#
max_allowed_packet = 48M

#超时#
interactive_timeout = 1800 #MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭  MySQL默认的wait_timeout 值为8个小时,
wait_timeout = 1800  #interactive_timeout参数需要同时配置才能生效

#禁用域名的解析#
skip_name_resolve = 1 #dns慢的情况下会影响性能,禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间

#禁用符号链接以防止各种安全风险
skip-symbolic-links=no

#innodb是否为每个表使用独立的表空间文件#
innodb_file_per_table = 1 #开启该参数的时候,Innodb将每个新创建的表的数据及索引存储在一个独立的.ibd文件里,而不是系统的表空间。

#innodb缓冲池的大小设置#
#说明缓冲池大小必须始终等于或者是innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的倍数,否则mysql会自动调整为相应的倍数#
innodb_buffer_pool_chunk_size= 256M   定义了buffer中每个chunk的大小  chunk 块
innodb_buffer_pool_size = 1G  #物理服务器内存的50%~75%  缓存 InnoDB存储引擎的表中的数据和索引数据,提高查询访问速度

#抑制即不显示 [Warning] [MY-013712] [Server] No suitable 'keyring_component_metadata_query' service implementation found to fulfill the request.
log_error_suppression_list='MY-013712'

启动数据库

systemctl start mysqld

MySQL不会在安装过程结束时自动启动。

如果操作系统启用了systemd,则应使用标准systemctl(或相反参数的service)命令(如stop、start、status和restart)来管理MySQL服务器服务。默认情况下, mysqld 服务处于启用状态,并在系统重新引导时启动。

在使用RPM和DEB软件包进行升级安装期间,如果升级发生时MySQL服务器正在运行,则MySQL服务器将停止,升级发生,然后MySQL服务器将重新启动。一个例外:如果版本在升级过程中也发生了变化(例如社区到商业,反之亦然),那么MySQL服务器不会重新启动。

在服务器初始启动时,如果服务器的数据目录为空,则会发生以下情况:

服务器已初始化。

在数据目录中生成SSL证书和密钥文件。

validate_password 已安装并启用。

rpm方式的MySQL安装布局

Files or Resources 文件或资源

Location

Client programs and scripts
客户端程序和脚本

/usr/bin

mysqld

server

/usr/sbin

Configuration file 配置文件

/etc/my.cnf

Data directory 数据目录

/var/lib/mysql

Error log file 错误日志文件

For RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.log
对于RHEL、Oracle Linux、CentOS或Fedora平台: /var/log/mysqld.log

For SLES: /var/log/mysql/mysqld.log 对于SLES: /var/log/mysql/mysqld.log

Value of secure_file_priv

secure_file_priv 的值

/var/lib/mysql-files

System V init script
System V初始化脚本

For RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqld
对于RHEL、Oracle Linux、CentOS或Fedora平台: /etc/init.d/mysqld

For SLES: /etc/init.d/mysql 对于SLES: /etc/init.d/mysql

Systemd service Systemd服务

For RHEL, Oracle Linux, CentOS or Fedora platforms: mysqld
对于RHEL、Oracle Linux、CentOS或Fedora平台: mysqld

For SLES: mysql 对于SLES: mysql

Pid file Pid文件

/var/run/mysql/mysqld.pid

Socket

/var/lib/mysql/mysql.sock

Keyring directory 密钥环目录

/var/lib/mysql-keyring

Unix manual pages Unix手册页

/usr/share/man

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

/usr/include/mysql

Libraries

/usr/lib/mysql

Miscellaneous support files (for example, error messages, and character set files)
其他支持文件(例如,错误消息和字符集文件)

/usr/share/mysql


日常维护

更改root用户密码

创建超级用户帐户 'root'@'localhost' 。超级用户的密码被设置并存储在错误日志文件中。要显示它,请对RHEL、Oracle Linux、CentOS和Fedora系统使用以下命令:

[root@localhost mysqldb]# grep 'temporary password' /var/log/mysqld.log
2024-05-08T02:42:49.692630Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: CcL8lBHueo-g

使用生成的临时密码登录,并为超级用户帐户设置自定义密码:

mysql -uroot -p
alter user 'root'@'localhost' identified with mysql_native_password by 'Tophn@123';
FLUSH PRIVILEGES;

由于validate_password 默认安装。 validate_password 实现的默认密码策略要求密码至少包含一个小写字母、一个小写字母、一个数字和一个特殊字符,并且密码总长度至少为8个字符。

问题处理

--问题描述
更改用户密码提示mysql_native_password' is not loaded
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'Tophn@123';
ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded

--解决办法
配置文件中增加
vi /etc/my.cnf
mysql_native_password=ON

重启库
systemctl restart mysqld

设置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;

更改密码策略和长度(可选)

由于validate_password 默认安装。 validate_password 实现的默认密码策略要求密码至少包含一个小写字母、一个小写字母、一个数字和一个特殊字符,并且密码总长度至少为8个字符。通常开发环境和测试环境的密码简单,为满足开发环境和测试环境人员对设置简单密码的需求,可更改密码策略,生产环境不建议更改密码策略。

vi /etc/my.cnf
#add by password secure
validate_password.policy=LOW

#add by password length
validate_password.length=4

重启库
systemctl restart mysqld

创建实现远程登录同时指定登录范围的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;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论