本节介绍如何在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 | New Default Value (MySQL 8.4) | Previous Default Value (MySQL 8.0) |
OFF if MADV_DONTDUMP is supported, otherwise ON | ON | |
If innodb_buffer_pool_size <= 1 GiB, then 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:
| 8 (or 1 if innodb_buffer_pool_size < 1 GiB) | |
none | all | |
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” . | OFF | |
OFF | ON | |
2 | * 2 | |
128 | , which meant a default of 4 | |
on Linux innodb_flush_method 在Linux上 | O_DIRECT if supported, otherwise fsync | fsync |
10000 | 200 | |
, with a minimum default value of 2000 | ||
67108864 (64 MiB) 67108864(64 MiB) | 16777216 (16 MiB) 16777216(16 MiB) | |
ON | OFF | |
4 | ||
available logical processors / 8, with a minimum default value of 4 | 4 | |
1 if available logical processors is <= 16, otherwise 4 | 4 | |
available logical processors / 2, with a minimum default value of 4 | 4 | |
ON | OFF | |
3% of total memory, with a default value within a range of 1-4 GiB | 1073741824 (1 GiB) 1073741824(1 GiB) | |
0, which means OFF 0,表示 OFF | 1073741824 (1 GiB) 1073741824(1 GiB) | |
OFF | 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:TAG 或 UUID:TAG:NUMBER 需要一个新的 TRANSACTION_GTID_TAG 权限,该权限是在此版本中添加的;在原始服务器上以及副本应用程序线程的 PRIVILEGE_CHECKS_APPLIER 上都是如此。这也意味着管理员现在可以将 SET @gtid_next=AUTOMATIC:TAG 或 UUID: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 。
下面列出了已删除的与复制源服务器相关的语句:
- CHANGE MASTER TO: Use CHANGE REPLICATION SOURCE TO.
- RESET MASTER: Use RESET BINARY LOGS AND GTIDS.
- SHOW MASTER STATUS: Use SHOW BINARY LOG STATUS.
- PURGE MASTER LOGS: Use PURGE BINARY LOGS.
- SHOW MASTER LOGS: Use SHOW BINARY LOGS.
此处列出了删除的与复制副本相关的SQL语句:
- START SLAVE: Use START REPLICA.
- STOP SLAVE: Use STOP REPLICA.
- SHOW SLAVE STATUS: Use SHOW REPLICA STATUS.
- SHOW SLAVE HOSTS: Use SHOW REPLICAS.
- RESET SLAVE: Use RESET REPLICA.
此处列出了从 CHANGE REPLICATION SOURCE TO 中删除的选项: - MASTER_AUTO_POSITION: Use SOURCE_AUTO_POSITION.
- MASTER_HOST: Use SOURCE_HOST.
- MASTER_BIND: Use SOURCE_BIND.
- MASTER_UseR: Use SOURCE_UseR.
- MASTER_PASSWORD: Use SOURCE_PASSWORD.
- MASTER_PORT: Use SOURCE_PORT.
- MASTER_CONNECT_RETRY: Use SOURCE_CONNECT_RETRY.
- MASTER_RETRY_COUNT: Use SOURCE_RETRY_COUNT.
- MASTER_DELAY: Use SOURCE_DELAY.
- MASTER_SSL: Use SOURCE_SSL.
- MASTER_SSL_CA: Use SOURCE_SSL_CA.
- MASTER_SSL_CAPATH: Use SOURCE_SSL_CAPATH.
- MASTER_SSL_CIPHER: Use SOURCE_SSL_CIPHER.
- MASTER_SSL_CRL: Use SOURCE_SSL_CRL.
- MASTER_SSL_CRLPATH: Use SOURCE_SSL_CRLPATH.
- MASTER_SSL_KEY: Use SOURCE_SSL_KEY.
- MASTER_SSL_VERIFY_SERVER_CERT: Use SOURCE_SSL_VERIFY_SERVER_CERT.
- MASTER_TLS_VERSION: Use SOURCE_TLS_VERSION.
- MASTER_TLS_CIPHERSUITES: Use SOURCE_TLS_CIPHERSUITES.
- MASTER_SSL_CERT: Use SOURCE_SSL_CERT.
- MASTER_PUBLIC_KEY_PATH: Use SOURCE_PUBLIC_KEY_PATH.
- GET_MASTER_PUBLIC_KEY: Use GET_SOURCE_PUBLIC_KEY.
- MASTER_HEARTBEAT_PERIOD: Use SOURCE_HEARTBEAT_PERIOD.
- MASTER_COMPRESSION_ALGORITHMS: Use SOURCE_COMPRESSION_ALGORITHMS.
- MASTER_ZSTD_COMPRESSION_LEVEL: Use SOURCE_ZSTD_COMPRESSION_LEVEL.
- MASTER_LOG_FILE: Use SOURCE_LOG_FILE.
- MASTER_LOG_POS: Use SOURCE_LOG_POS.
此处列出了从 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
安装前准备
查看操作系统版本
--查看操作系统版本
[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-community-client-plugins | Shared plugins for MySQL client applications |
mysql-community-common | Common files for server and client libraries |
mysql-community-devel | Development header files and libraries for MySQL database client applications |
mysql-community-embedded-compat | MySQL server as an embedded library with compatibility for applications using version 18 of the library |
mysql-community-icu-data-files | MySQL packaging of ICU data files needed by MySQL regular expressions |
mysql-community-libs | Shared libraries for MySQL database client applications |
mysql-community-libs-compat | Shared compatibility libraries for previous MySQL installations; only present if previous MySQL versions are supported by the platform |
mysql-community-server | Database server and related tools |
mysql-community-server-debug | Debug server and plugin binaries |
mysql-community-test | Test suite for the MySQL server |
mysql-community | The source code RPM looks similar to mysql-community-8.4.0-1.el7.src.rpm, depending on selected OS |
Additional *debuginfo* RPMs | 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. |
安装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 mysqldMySQL不会在安装过程结束时自动启动。
如果操作系统启用了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 |
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 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 | For RHEL, Oracle Linux, CentOS or Fedora platforms: /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 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;



