mysql 指定根目录 迁移根目录

mysql 指定根目录 迁移根目录

  • 1、问题描述
  • 2、问题分析
  • 3、解决方法
    • 3.1、初始化mysql前就手动指定mysql根目录为一个大的分区(支持动态扩容),事前就根本上解决mysql根目录空间不够问题
      • 3.1.0、方法思路
      • 3.1.1、卸载mariadb
      • 3.1.2、下载Mysql安装包
      • 3.1.3、安装Mysql 8.35
      • 3.1.4、初始化(启动)mysql 8.0.35
      • 3.1.5、安装后配置
    • 3.2、发现mysql根目录爆满了,改变mysql根目录为一个大的分区(支持动态扩容),事后解决根目录空间不够问题(需要迁移之前的根目录数据到新的根目录)
      • 3.2.1、正常安装mysql后 mysql根目录是/var/lib/mysql
        • 3.2.1.1、卸载mariadb
        • 3.2.1.2、下载Mysql安装包
        • 3.2.1.3、安装Mysql 8.35
        • 3.2.1.4、启动mysql 8.0.35
        • 3.2.1.5、安装后配置
      • 3.2.2、默认根目录安装mysql后,创建mysql数据表一段时间后发现mysql根目录空间不够、需要迁移根目录
        • 3.2.2.1、创建mysql数据
      • 3.2.3、配置新的mysql根目录、迁移mysql根目录数据到新的根目录
      • 3.2.4、重要!迁移mysql根目录后 确认mysql服务正常
        • 3.2.4.1、迁移mysql根目录后,检查mysql启动日志是否正常
        • 3.2.4.2、执行mysql服务检测,确认mysql服务的接口调用是否正常
        • 3.2.4.3、创建新的数据库,确认迁移mysql根目录后 新的mysql根目录下是否会出现和这个数据库同名的文件夹

1、问题描述

本博文以银河麒麟高级服务器操作系统v10 sp3为系统平台,安装mysql 8.0.35。

安装完mysql后,默认启动mysql后,默认的mysql根目录是/var/lib/mysql
查看mysql配置文件/etc/my.cnf 查看mysql根目录

cat /etc/my.cnf

其中 datadir=/var/lib/mysql 就是MySQL根目录,mysql所有的数据库文件都放在根目录下

在这里插入图片描述

在有些服务器上,/ 根目录空间非常小而且不能动态扩容,不能承载太多的mysql数据,随着mysql的运行,默认的mysql根目录是/var/lib/mysql 占用空间越来越大,导致/ 目录爆满,系统崩溃。(为什么不扩充根目录呢?因为在有些服务器上根目录不是LVM分区、不能动态扩容)

不修改默认的mysql配置文件,初始化mysql后,mysql根目录如下,查看mysql根目录的组织结构

ls -l /var/lib/mysql

整个根目录大小是90M(含有mysql默认的系统数据库:mysql、sys、performance_schema、information_schema,和其他的一些文件:比如密钥文件、mysql sock文件、mysql binlog文件等)

在这里插入图片描述

mysql默认的系统数据库:mysql、sys、performance_schema、information_schema

在这里插入图片描述

2、问题分析

有2个思路解决mysql根目录空间爆满的问题

1、整体规划,防患于未然
在mysql初始化前,通过修改mysql的配置文件/etc/my.cnf指定一个很大或者可以动态扩容的文件目录作为mysql根目录。
2、后知后觉,整体规划没做好,事后处理
如果在生产环境上,初始化mysql前没有手动指定mysql根目录,造成默认的mysql根目录就是/var/lib/mysql,并且环境已经运行一段时间发现mysql根目录空间不够了,这种情况下仍然可以通过修改mysql的配置文件/etc/my.cnf指定一个很大或者可以动态扩容的文件目录作为mysql根目录,只不过要把之前mysql根目录/var/lib/mysql 下的数据迁移到新的mysql根目录即可。

3、解决方法

3.1、初始化mysql前就手动指定mysql根目录为一个大的分区(支持动态扩容),事前就根本上解决mysql根目录空间不够问题

3.1.0、方法思路

在mysql启动前,先在mysql配置文件/etc/my.cnf中指定mysql根目录,这个根目录的空间要保证非常大,或者这个根目录是能够动态扩容的,比如LVM分区。

linux上mysql配置文件是/etc/my.cnf或者/etc/mysql/mysql.cnf [redhat系是/etc/my.cnf,debian系是/etc/mysql/mysql.cnf]。
windows上mysql配置文件是C:\my.ini。

本文以linux系统为例描述配置mysql根目录方法
参考链接: https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/data-directory-initialization.html

在mysql初始化之前就修改默认mysql配置文件的内容以满足您的要求,然后再初始化mysql。

在这里插入图片描述

在linux系统上安装完成mysql后,先不要初始化mysql。

先编辑mysql配置文件/etc/my.cnf

cp /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf

修改datadir和socket参数
修改前

在这里插入图片描述

修改后

在这里插入图片描述

然后初始化mysql

systemctl start mysqld.service

安装过程如下

3.1.1、卸载mariadb

由于银河麒麟v10系统默认安装了mariadb 会与Mysql相冲突,因此首先需要卸载系统自带的mariadb
查看系统上默认安装的Mariadb软件包
使用yum查看已经安装的mariadb软件包

yum list --installed mariadb

在这里插入图片描述

rpm -qa|grep mariadb

在这里插入图片描述

查看默认的mariadb配置文件

在这里插入代码片

默认的配置文件是 /etc/my.cnf

在这里插入图片描述

查看默认的mariadb配置目录

find / -type d  -name my.cnf*

在这里插入图片描述

使用yum卸载 mariadb

yum remove mariadb.x86_64

在这里插入图片描述

验证卸载Mariadb成功

在这里插入图片描述

查看Mariadb配置文件和目录是否还存在 已经不存在了

在这里插入图片描述

至此mariadb卸载完成

3.1.2、下载Mysql安装包

访问官网下载链接 链接: https://dev.mysql.com/downloads/mysql/

选择如下 点击下载按钮 下载安装包

在这里插入图片描述

选择 mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar 点击下载

在这里插入图片描述

为什么选择redhat 8的操作系统版本呢?
https://www.kylinos.cn/about/news/814.html
通过查询麒麟官网得知,银河麒麟高级服务器操作系统是兼容centos8的,centos8和redhat8兼容。

在这里插入图片描述

3.1.3、安装Mysql 8.35

官方安装文档
链接: https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/linux-installation-rpm.html

RPM Packages for MySQL Community Edition

Package NameSummary
mysql-community-clientMySQL client applications and tools
mysql-community-client-pluginsShared plugins for MySQL client applications
mysql-community-commonCommon files for server and client libraries
mysql-community-develDevelopment header files and libraries for MySQL database client applications
mysql-community-embedded-compatMySQL server as an embedded library with compatibility for applications using version 18 of the library
mysql-community-icu-data-filesMySQL packaging of ICU data files needed by MySQL regular expressions
mysql-community-libsShared libraries for MySQL database client applications
mysql-community-libs-compatShared compatibility libraries for previous MySQL installations; only present if previous MySQL versions are supported by the platform
mysql-community-serverDatabase server and related tools
mysql-community-server-debugDebug server and plugin binaries
mysql-community-testTest suite for the MySQL server
mysql-communityThe source code RPM looks similar to mysql-community-8.0.35-1.el7.src.rpm, depending on selected OS
Additional debuginfo RPMsThere 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.

rpm包的名称格式:packagename-version-distribution-arch.rpm

安装步骤如下:
创建Mysql安装包目录

mkdir -p /root/package/mysql

上传Mysql安装包mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar 到/root/package/mysql 目录下

cd /root/package/mysql
mkdir mysql-8.0.35-1.el8.x86_64.rpm-bundle

安装过程如下

tar -xvf mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar -C mysql-8.0.35-1.el8.x86_64.rpm-bundle/ 
cd mysql-8.0.35-1.el8.x86_64.rpm-bundle/

只需要安装以下软件包即可
In most cases, you need to install the mysql-community-server, mysql-community-client, mysql-community-client-plugins, mysql-community-libs, mysql-community-icu-data-files, mysql-community-common, and mysql-community-libs-compat packages to get a functional, standard MySQL installation. To perform such a standard, basic installation, go to the folder that contains all those packages (and, preferably, no other RPM packages with similar names), and issue the following command:

意思是说这个软件包目录下只包含有上面提到的这几个包即可,不能有其他的包,因此把其他的包删除掉。只保留
mysql-community-server, mysql-community-client, mysql-community-client-plugins, mysql-community-libs, mysql-community-icu-data-files, mysql-community-common, and mysql-community-libs-compat

在这里插入图片描述

rm -f mysql-community-server-debug*
rm -f mysql-community-debug*
rm -f mysql-community-client-debuginfo-8.0.35-1.el8.x86_64.rpm
rm -f mysql-community-test-*
rm -f mysql-community-client-plugins-debuginfo-8.0.35-1.el8.x86_64.rpm
rm -f mysql-community-devel-8.0.35-1.el8.x86_64.rpm
rm -f mysql-community-libs-debuginfo-8.0.35-1.el8.x86_64.rpm

在这里插入图片描述

安装mysql前,操作系统上没有没有默认的mysql根目录/var/lib/mysql、,mysql配置文件/etc/my.cnf

在这里插入图片描述

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

安装完成如图所示

在这里插入图片描述

查看安装的mysql包

yum list --installed |grep -i mysql
rpm -qa|grep -i mysql

在这里插入图片描述

安装完成后,会形成以下文件和目录(执行安装命令后才会形成以下文件和目录)
安装mysql后为什么就会形成以下文件和目录呢?
这是因为所谓的安装mysql,安装mysql这个动作所做的操作是:把mysql安装包中的文件目录结构复制到安装mysql的操作系统上,仅此而已。mysql安装包里面本就有以下这些文件和目录。

Files or ResourcesLocation
Files or ResourcesLocation
Client programs and scripts/usr/bin
mysqld server/usr/sbin
Configuration file/etc/my.cnf
Data directory/var/lib/mysql
Error log fileFor RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.log
Value of secure_file_priv/var/lib/mysql-files
System V init scriptFor RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqld
Systemd serviceFor RHEL, Oracle Linux, CentOS or Fedora platforms: mysqld
Pid file/var/run/mysqld/mysqld.pid
Socket/var/lib/mysql/mysql.sock
Keyring directory/var/lib/mysql-keyring
Unix manual pages/usr/share/man
Include (header) files/usr/include/mysql
Libraries/usr/lib64/mysql
Miscellaneous support files (for example, error messages, and character set files)/usr/share/mysql

安装完后 也会产生一个名为mysql 的系统用户,和一个名为mysql 的系统用户组。
在这里插入图片描述
至此安装Mysql 8.35完成。
如果在安装过程中出现问题,您可能会在错误日志文件/var/log/mysqld.log中找到日志信息。
安装成功的情况下 /var/log/mysqld.log是空的

如果需要切换到Mysql用户 使用如下命令

su - mysql --shell=/bin/bash

下面这项是可选的 看调试信息才需要这样启动Mysql,一般不需要。

Debug Package.  A special variant of MySQL Server compiled with the debug package has been included in the server RPM packages. It performs debugging and memory allocation checks and produces a trace file when the server is running. To use that debug version, start MySQL with /usr/sbin/mysqld-debug, instead of starting it as a service or with /usr/sbin/mysqld. See The DBUG Package for the debug options you can use.

查看安装mysql后形成的目录和文件以及默认的配置文件

1、Client programs and scripts

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/bin目录下的东西
和mysql安装包mysql-community-client-8.0.35-1.el8.x86_64.rpm里面的/usr/bin目录下的东西

在这里插入图片描述

在这里插入图片描述

2、mysqld server

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的东西

在这里插入图片描述

3、Configuration file

在这里插入图片描述

安装mysql后为什么就会创建mysql的配置文件/etc/my.cnf呢?
这是因为mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm,这个包里面的目录结构如下

在这里插入图片描述

在这里插入图片描述

所谓的安装mysql,安装mysql这个动作所做的操作是:把mysql安装包中的文件目录结构复制到安装mysql的操作系统上,仅此而已。

4、Data directory
安装mysql后,mysql根目录/var/lib/msyql里面是空的。说明此时还没有初始化mysql,仅仅是安装完成了mysql而已。
在这里插入图片描述

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/var/lib/mysql文件夹

在这里插入图片描述

5、Error log file

在这里插入图片描述

/var/log/mysqld.log不是从mysql安装包拷贝的,是安装mysql时在操作系统上新建的这个文件,看这个文件的日期就是安装mysql的日期,和其他文件夹比如mysql根目录/var/lib/mysql、/var/lib/mysql-files的日期是不一样的。

6、Value of secure_file_priv

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/var/lib/mysql-files文件夹

在这里插入图片描述

7、System V init script

在这里插入图片描述

安装包里没有这个文件夹,也可能因为此次安装Mysql使用的是银河麒麟高级服务器操作系统v10 sp3,属于systemd系列的操作系统,所以并没有创建system v的启动脚本吧。不深究了,不影响。

8、Systemd service

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/usrl/ib/systemd/system文件夹下的mysqld.service文件。

在这里插入图片描述

9、Pid file

在这里插入图片描述

mysql还没有启动,所以没有mysql的pid文件。

10、Socket

在这里插入图片描述

mysql还没有启动,所以没有mysql的socket文件。

11、Keyring directory

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/var/lib/mysql-keyring文件夹

在这里插入图片描述

12、Unix manual pages

/usr/share/man

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/share/man目录下的东西
对应mysql安装包mysql-community-client-8.0.35-1.el8.x86_64.rpm里面的/usr/shar/man文件夹

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

13、Include (header) files

在这里插入图片描述

14、Libraries
在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/lib64目录下的东西

在这里插入图片描述

在这里插入图片描述

15、Miscellaneous support files (for example, error messages, and character set files)、

在这里插入图片描述

3.1.4、初始化(启动)mysql 8.0.35

对于使用rpm包或deb包安装mysql的,启动mysql时就会执行初始化。本文是用rpm包安装的mysql,因此启动mysql服务就会初始化mysql。
安装后默认不会启动Mysql服务

在这里插入图片描述

在linux系统上安装完成mysql后,先不要初始化mysql。

先编辑mysql配置文件/etc/my.cnf

cp /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf

修改datadir和socket参数
修改前

在这里插入图片描述

修改后

在这里插入图片描述

然后初始化mysql,使用rpm包或deb包安装mysql的,启动mysql时就会执行初始化。本文是用rpm包安装的mysql,因此启动mysql服务即可。

注意启动mysql服务前/var/lib/mysql下是空的,并且没有/home/mysql文件夹

在这里插入图片描述

启动mysql命令

systemctl start mysqld.service

此启动mysql命令做下面这些事情

  1. 初始化mysql服务
  2. 产生ssl证书和密钥在Mysql数据目录下
  3. validate_password默认安装。validate_password实现的默认密码策略要求密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符,并且密码总长度至少为8个字符。
  4. 已创建超级用户帐户“root”@“localhost”。超级用户的密码已设置并存储在错误日志文件中。查看mysql的root账户默认密码 grep 'temporary password' /var/log/mysqld.log

1、查看数据目录
启动mysql服务前/var/lib/mysql下是空的,并且没有/home/mysql文件夹
启动mysql服务后/var/lib/mysql下仍然是空的,并且产生了/home/mysql文件夹,/home/mysql文件夹的大小是192M。(里面包含了初始化mysql时形成的mysql系统数据库以及密钥文件等)

在这里插入图片描述

查看mysql根目录/home/mysql下各个子文件夹

在这里插入图片描述

2、证书在数据目录下

在这里插入图片描述

3、查看 超级用户帐户“root”@“localhost” 的默认密码 vefxpw?ag6Ww

grep 'temporary password' /var/log/mysqld.log

在这里插入图片描述

4、启动Mysql后 会形成sock文件和pid文件

ls -lh /home/mysql/mysql.sock
ls -lh /var/run/mysqld/mysqld.pid
cat /var/run/mysqld/mysqld.pid

在这里插入图片描述

安装mysql后默认是监听在“:::3306”上的,这个表示ipv6监听,同时也包含了ipv4,也就说,ipv6和ipv4都支持访问mysql。

netstat -antlp|grep 3306

在这里插入图片描述

停止mysql服务后 sock文件和pid文件都消失了

在这里插入图片描述

开启mysql服务后 sock文件和pid文件重新生成了 只不过pid文件的数值不同了。

在这里插入图片描述

5、查看启动日志

cat /var/log/mysqld.log

下面是第一次启动mysql服务的日志 含有初始化日志:[System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.35) initializing of server in progress as process 70838
在这里插入图片描述

初始化后停止mysql服务,再次开启mysql服务就不会有初始化日志了,只会有启动日志。

在这里插入图片描述

3.1.5、安装后配置

链接: https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/postinstallation.html

使用安装Mysql数据库 时生成的默认密码登录mysql数据库

mysql -uroot -p

报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

在这里插入图片描述

配置文件已经指定了socket=/home/mysql/mysql.sock 不知道为什么mysql还是去找默认的socket文件/var/lib/mysql/mysql.sock

socket=/home/mysql/mysql.sock

在这里插入图片描述

在登录mysql时使用-S参数手动指定正确的socket文件即可

mysql -uroot -p -S /home/mysql/mysql.sock

在这里插入图片描述

这个问题可以通过 创建一个软连接文件名为/var/lib/mysql/mysql.sock 连接到 迁移目录后新的mysql.sock文件,这样之后登录mysql时就不用添加-S参数了。

ln -s /home/mysql/mysql.sock /var/lib/mysql/mysql.sock

没修改默认密码前不能进行数据库sql操作

在这里插入图片描述

修改Mysql默认密码为Mysql@123

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql@123' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> use mysql;
Database changed
mysql> 
mysql> update user set host = "%" where user = "root";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Mysql@123';
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> 

修改密码后即可成功执行数据库sql命令

在这里插入图片描述

使用新密码登录mysql数据库

在这里插入图片描述

实际生产环境使用mysql时,发现导入一些数据表后 mysql根目录所在的/home分区 就增大了差不多1G。后期mysql会产生更多的数据会占用很多空间,因此在启动mysql服务前先编辑配置文件选择一个大的分区作为mysql根目录是很重要的。

3.2、发现mysql根目录爆满了,改变mysql根目录为一个大的分区(支持动态扩容),事后解决根目录空间不够问题(需要迁移之前的根目录数据到新的根目录)

3.2.1、正常安装mysql后 mysql根目录是/var/lib/mysql

3.2.1.1、卸载mariadb

由于银河麒麟v10系统默认安装了mariadb 会与Mysql相冲突,因此首先需要卸载系统自带的mariadb
查看系统上默认安装的Mariadb软件包
使用yum查看已经安装的mariadb软件包

yum list --installed mariadb

在这里插入图片描述

rpm -qa|grep mariadb

在这里插入图片描述

查看默认的mariadb配置文件

在这里插入代码片

默认的配置文件是 /etc/my.cnf

在这里插入图片描述

查看默认的mariadb配置目录

find / -type d  -name my.cnf*

在这里插入图片描述

使用yum卸载 mariadb

yum remove mariadb.x86_64

在这里插入图片描述

验证卸载Mariadb成功

在这里插入图片描述

查看Mariadb配置文件和目录是否还存在 已经不存在了

在这里插入图片描述

至此mariadb卸载完成

3.2.1.2、下载Mysql安装包

访问官网下载链接 链接: https://dev.mysql.com/downloads/mysql/

选择如下 点击下载按钮 下载安装包

在这里插入图片描述

选择 mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar 点击下载

在这里插入图片描述

为什么选择redhat 8的操作系统版本呢?
https://www.kylinos.cn/about/news/814.html
通过查询麒麟官网得知,银河麒麟高级服务器操作系统是兼容centos8的,centos8和redhat8兼容。

在这里插入图片描述

3.2.1.3、安装Mysql 8.35

官方安装文档
链接: https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/linux-installation-rpm.html

RPM Packages for MySQL Community Edition

Package NameSummary
mysql-community-clientMySQL client applications and tools
mysql-community-client-pluginsShared plugins for MySQL client applications
mysql-community-commonCommon files for server and client libraries
mysql-community-develDevelopment header files and libraries for MySQL database client applications
mysql-community-embedded-compatMySQL server as an embedded library with compatibility for applications using version 18 of the library
mysql-community-icu-data-filesMySQL packaging of ICU data files needed by MySQL regular expressions
mysql-community-libsShared libraries for MySQL database client applications
mysql-community-libs-compatShared compatibility libraries for previous MySQL installations; only present if previous MySQL versions are supported by the platform
mysql-community-serverDatabase server and related tools
mysql-community-server-debugDebug server and plugin binaries
mysql-community-testTest suite for the MySQL server
mysql-communityThe source code RPM looks similar to mysql-community-8.0.35-1.el7.src.rpm, depending on selected OS
Additional debuginfo RPMsThere 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.

rpm包的名称格式:packagename-version-distribution-arch.rpm

安装步骤如下
创建Mysql安装包目录

mkdir -p /root/package/mysql

上传Mysql安装包mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar 到/root/package/mysql 目录下

cd /root/package/mysql
mkdir mysql-8.0.35-1.el8.x86_64.rpm-bundle
tar -xvf mysql-8.0.35-1.el8.x86_64.rpm-bundle.tar -C mysql-8.0.35-1.el8.x86_64.rpm-bundle/ 
cd mysql-8.0.35-1.el8.x86_64.rpm-bundle/

只需要安装以下软件包即可
In most cases, you need to install the mysql-community-server, mysql-community-client, mysql-community-client-plugins, mysql-community-libs, mysql-community-icu-data-files, mysql-community-common, and mysql-community-libs-compat packages to get a functional, standard MySQL installation. To perform such a standard, basic installation, go to the folder that contains all those packages (and, preferably, no other RPM packages with similar names), and issue the following command:

意思是说这个软件包目录下只包含有上面提到的这几个包即可,不能有其他的包,因此把其他的包删除掉。只保留
mysql-community-server, mysql-community-client, mysql-community-client-plugins, mysql-community-libs, mysql-community-icu-data-files, mysql-community-common, and mysql-community-libs-compat

在这里插入图片描述

rm -f mysql-community-server-debug*
rm -f mysql-community-debug*
rm -f mysql-community-client-debuginfo-8.0.35-1.el8.x86_64.rpm
rm -f mysql-community-test-*
rm -f mysql-community-client-plugins-debuginfo-8.0.35-1.el8.x86_64.rpm
rm -f mysql-community-devel-8.0.35-1.el8.x86_64.rpm
rm -f mysql-community-libs-debuginfo-8.0.35-1.el8.x86_64.rpm

在这里插入图片描述

安装mysql前,操作系统上没有默认的mysql根目录/var/lib/mysql、mysql配置文件/etc/my.cnf

在这里插入图片描述

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

安装完成如图所示

在这里插入图片描述

查看安装的mysql包

yum list --installed |grep -i mysql
rpm -qa|grep -i mysql

在这里插入图片描述

安装完成后,会形成以下文件和目录(执行安装命令后才会形成以下文件和目录)
安装mysql后为什么就会形成以下文件和目录呢?
这是因为所谓的安装mysql,安装mysql这个动作所做的操作是:把mysql安装包中的文件目录结构复制到安装mysql的操作系统上,仅此而已。mysql安装包里面本就有以下这些文件和目录。

Files or ResourcesLocation
Files or ResourcesLocation
Client programs and scripts/usr/bin
mysqld server/usr/sbin
Configuration file/etc/my.cnf
Data directory/var/lib/mysql
Error log fileFor RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.log
Value of secure_file_priv/var/lib/mysql-files
System V init scriptFor RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqld
Systemd serviceFor RHEL, Oracle Linux, CentOS or Fedora platforms: mysqld
Pid file/var/run/mysqld/mysqld.pid
Socket/var/lib/mysql/mysql.sock
Keyring directory/var/lib/mysql-keyring
Unix manual pages/usr/share/man
Include (header) files/usr/include/mysql
Libraries/usr/lib64/mysql
Miscellaneous support files (for example, error messages, and character set files)/usr/share/mysql

安装完后 也会产生一个名为mysql 的系统用户,和一个名为mysql 的系统用户组。
在这里插入图片描述
至此安装Mysql 8.35完成。
如果在安装过程中出现问题,您可能会在错误日志文件/var/log/mysqld.log中找到日志信息。
安装成功的情况下 /var/log/mysqld.log是空的

如果需要切换到Mysql用户 使用如下命令

su - mysql --shell=/bin/bash

下面这项是可选的 看调试信息才需要这样启动Mysql,一般不需要。

Debug Package.  A special variant of MySQL Server compiled with the debug package has been included in the server RPM packages. It performs debugging and memory allocation checks and produces a trace file when the server is running. To use that debug version, start MySQL with /usr/sbin/mysqld-debug, instead of starting it as a service or with /usr/sbin/mysqld. See The DBUG Package for the debug options you can use.

查看安装mysql后形成的目录和文件以及默认的配置文件

1、Client programs and scripts

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/bin目录下的东西
和mysql安装包mysql-community-client-8.0.35-1.el8.x86_64.rpm里面的/usr/bin目录下的东西

在这里插入图片描述

在这里插入图片描述

2、mysqld server

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的东西

在这里插入图片描述

3、Configuration file

在这里插入图片描述

安装mysql后为什么就会创建mysql的配置文件/etc/my.cnf呢?
这是因为mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm,这个包里面的目录结构如下

在这里插入图片描述

在这里插入图片描述

所谓的安装mysql,安装mysql这个动作所做的操作是:把mysql安装包中的文件目录结构复制到安装mysql的操作系统上,仅此而已。

4、Data directory
安装mysql后,mysql根目录/var/lib/msyql里面是空的。说明此时还没有初始化mysql,仅仅是安装完成了mysql而已。
在这里插入图片描述

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/var/lib/mysql文件夹

在这里插入图片描述

5、Error log file

在这里插入图片描述

/var/log/mysqld.log不是从mysql安装包拷贝的,是安装mysql时在操作系统上新建的这个文件,看这个文件的日期就是安装mysql的日期,和其他文件夹比如mysql根目录/var/lib/mysql、/var/lib/mysql-files的日期是不一样的。

6、Value of secure_file_priv

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/var/lib/mysql-files文件夹

在这里插入图片描述

7、System V init script

在这里插入图片描述

安装包里没有这个文件夹,也可能因为此次安装Mysql使用的是银河麒麟高级服务器操作系统v10 sp3,属于systemd系列的操作系统,所以并没有创建system v的启动脚本吧。不深究了,不影响。

8、Systemd service

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/usrl/ib/systemd/system文件夹下的mysqld.service文件。

在这里插入图片描述

9、Pid file

在这里插入图片描述

mysql还没有启动,所以没有mysql的pid文件。

10、Socket

在这里插入图片描述

mysql还没有启动,所以没有mysql的socket文件。

11、Keyring directory

在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/sbin目录下的/var/lib/mysql-keyring文件夹

在这里插入图片描述

12、Unix manual pages

/usr/share/man

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/share/man目录下的东西
对应mysql安装包mysql-community-client-8.0.35-1.el8.x86_64.rpm里面的/usr/shar/man文件夹

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

13、Include (header) files

在这里插入图片描述

14、Libraries
在这里插入图片描述

对应mysql安装包mysql-community-server-8.0.35-1.el8.x86_64.rpm里面的/usr/lib64目录下的东西

在这里插入图片描述

在这里插入图片描述

15、Miscellaneous support files (for example, error messages, and character set files)、

在这里插入图片描述

3.2.1.4、启动mysql 8.0.35

对于使用rpm包或deb包安装mysql的,启动mysql时就会执行初始化。本文是用rpm包安装的mysql,因此启动mysql服务就会初始化mysql。
安装后默认不会启动Mysql服务

在这里插入图片描述

然后初始化mysql,使用rpm包或deb包安装mysql的,启动mysql时就会执行初始化。本文是用rpm包安装的mysql,因此启动mysql服务即可。

注意启动mysql服务前/var/lib/mysql下是空的,并且没有/home/mysql文件夹

在这里插入图片描述

启动mysql命令

systemctl start mysqld.service

此启动mysql命令做下面这些事情

  1. 初始化mysql服务
    检查有没有mysql根目录存在,如果没有mysql根目录存在,则创建mysql根目录。然后在mysql根目录下创建mysql的系统数据库:默认的系统数据库:mysql、sys、performance_schema、information_schema。
  2. 产生ssl证书和密钥在Mysql根目录下
  3. validate_password默认安装。validate_password实现的默认密码策略要求密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符,并且密码总长度至少为8个字符。
  4. 已创建超级用户帐户“root”@“localhost”。超级用户的密码已设置并存储在错误日志文件中。查看mysql的root账户默认密码 grep 'temporary password' /var/log/mysqld.log

1、查看数据目录
启动mysql服务前/var/lib/mysql下是空的
启动mysql服务后/var/lib/mysql 文件夹的大小是192M。(里面包含了初始化mysql时形成的mysql系统数据库以及密钥文件等)

在这里插入图片描述

2、证书在数据目录下

在这里插入图片描述

3、查看 超级用户帐户“root”@“localhost” 的默认密码 9lE,%p=rlZz2

grep 'temporary password' /var/log/mysqld.log

在这里插入图片描述

4、启动Mysql后 会形成sock文件和pid文件

ls -lh /var/lib/mysql/mysql.sock
ls -lh /var/run/mysqld/mysqld.pid
cat /var/run/mysqld/mysqld.pid

在这里插入图片描述

安装mysql后默认是监听在“:::3306”上的,这个表示ipv6监听,同时也包含了ipv4,也就说,ipv6和ipv4都支持访问mysql。

在这里插入图片描述

停止mysql服务后 sock文件和pid文件都消失了

ls -lh /var/lib/mysql/mysql.sock
ls -lh /var/run/mysqld/mysqld.pid
cat /var/run/mysqld/mysqld.pid

在这里插入图片描述

开启mysql服务后 sock文件和pid文件重新生成了 只不过pid文件的数值不同了。

ls -lh /var/lib/mysql/mysql.sock
ls -lh /var/run/mysqld/mysqld.pid
cat /var/run/mysqld/mysqld.pid

在这里插入图片描述

5、查看启动日志
下面是第一次启动mysql服务的日志 含有初始化日志:[System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.35) initializing of server in progress as process 10985

在这里插入图片描述

初始化后停止mysql服务,再次开启mysql服务就不会有初始化日志了,只会有启动日志。

在这里插入图片描述

3.2.1.5、安装后配置

链接: https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/postinstallation.html

使用安装Mysql数据库 时生成的默认密码登录mysql数据库

mysql -uroot -p

没修改默认密码前不能进行数据库sql操作

show databases;

在这里插入图片描述

修改Mysql默认密码为Mysql@123

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql@123' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> use mysql;
Database changed
mysql> 
mysql> update user set host = "%" where user = "root";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Mysql@123';
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> 

修改密码后即可成功执行数据库sql命令

在这里插入图片描述

使用新密码登录mysql数据库

在这里插入图片描述

3.2.2、默认根目录安装mysql后,创建mysql数据表一段时间后发现mysql根目录空间不够、需要迁移根目录

3.2.2.1、创建mysql数据

下面创建mysql数据表,为了快速创建,直接从其他数据库中备份的sql文件恢复到mysql容器中。
创建mysql数据表前查看mysql根目录占用空间 占用了192M,因此mysql服务根目录一定要大,或者能够动态扩容才行,不然很快就会因为mysql数据表占用空间增大导致mysql根目录增大,最终导致mysql根目录所在宿主机的分区爆满、最终操作系统崩溃。

查看mysq配置文件/etc/my.cnf发现mysql根目录是/var/lib/mysql

cat /etc/my.cnf|grep -i dir

在这里插入图片描述

直接从其他数据库中备份的sql文件恢复到mysql中

在这里插入图片描述

source /root/8.0.24AllDatabasesBackup.sql;

在这里插入图片描述

恢复mysql数据完成

在这里插入图片描述

恢复mysql数据后,再次查看mysql数据库如下

show databases;
use kgc;
select table_name,table_comment,create_time from information_schema.TABLES where table_schema='kgc';
select * from banji;

在这里插入图片描述

恢复mysql数据完成后再次查看mysql根目录占用空间,占用从192M增加到了336M。这是因为恢复的数据库表占用了空间。

在这里插入图片描述

恢复mysql数据前查看mysql根目录占用空间,是192M。

在这里插入图片描述

很快随着mysql数据量增多,就会导致mysql根目录的增大,最终导致mysql根目录所在的分区磁盘占用爆满,操作系统崩溃。怎么解决这个问题呢?只需迁移mysql根目录到一个比较大的分区即可或者迁移mysql根目录到一个可以动态扩展的分区,通常二者都要,把mysql根目录迁移到一个空间比较大的而且可以动态扩容的分区即可。

3.2.3、配置新的mysql根目录、迁移mysql根目录数据到新的根目录

停止mysql服务

systemctl stop mysqld.service

建立新的mysql根目录,执行命令df -h,找一个大的磁盘。这里指定的mysql新的根目录是/home/mysql

mkdir -p /home/mysql

在这里插入图片描述

迁移/var/lib/mysql目录下面的文件到 新的mysql根目录/home/mysql

rm -rf /home/mysql
cp -r /var/lib/mysql /home/mysql

更改迁移后mysql根目录属主为mysql:mysql,因为cp -r /var/lib/mysql /home/mysql之后,/home/mysql的属主是root:root。

chown -R mysql:mysql /home/mysql/

在这里插入图片描述

在这里插入图片描述

编辑mysql配置文件/etc/my.cnf 指定mysql根目录是/home/mysql

cp /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf

修改datadir和socket参数
修改前

在这里插入图片描述

修改后

在这里插入图片描述

然后启动mysql服务

systemctl start mysqld.service

检查mysql新的根目录是否配置成功
查看mysql启动日志 可以看到启动日志中的mysql socket文件是 /home/mysql/mysql.sock 说明mysql已经使用了新的mysql配置。

cat /var/log/mysqld.log

在这里插入图片描述

启动mysql服务成功后,确认迁移mysql根目录之前的数据库数据还在不

mysql -uroot -p

报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

在这里插入图片描述

配置文件已经指定了socket=/home/mysql/mysql.sock 不知道为什么mysql还是去找默认的socket文件/var/lib/mysql/mysql.sock

socket=/home/mysql/mysql.sock

在这里插入图片描述

在登录mysql时使用-S参数手动指定正确的socket文件即可

mysql -uroot -p -S /home/mysql/mysql.sock

在这里插入图片描述

这个问题可以通过 创建一个软连接文件名为/var/lib/mysql/mysql.sock 连接到 迁移目录后新的mysql.sock文件,这样之后登录mysql时就不用添加-S参数了。

ln -s /home/mysql/mysql.sock /var/lib/mysql/mysql.sock

迁移mysql根目录后,再次查看mysql数据库如下,确认和迁移根目录前的mysql数据库数据是否一致

show databases;
use kgc;
select table_name,table_comment,create_time from information_schema.TABLES where table_schema='kgc';
select * from banji;

在这里插入图片描述

3.2.4、重要!迁移mysql根目录后 确认mysql服务正常

3.2.4.1、迁移mysql根目录后,检查mysql启动日志是否正常
cat /var/log/mysqld.log

如下mysql启动日志无报错即为正常。
在这里插入图片描述

3.2.4.2、执行mysql服务检测,确认mysql服务的接口调用是否正常

进入mysql 查看数据库表和迁移mysql根目录之前是否一致

查询banji表的数据 和迁移mysql根目录之前的数据是一样的。说明mysql内部服务没问题。

在这里插入图片描述

3.2.4.3、创建新的数据库,确认迁移mysql根目录后 新的mysql根目录下是否会出现和这个数据库同名的文件夹

如果创建test数据库后,查看新的mysql根目录下有test文件夹,说明mysql正在使用新的根目录/home/mysql作为数据目录,说明迁移mysql根目录成功了。

创建test数据库前,查看新的mysql根目录下没有test文件夹

ls -l /home/mysql/test

在这里插入图片描述

创建test数据库

create database test default character set utf8mb4;

在这里插入图片描述

查看新的mysql根目录下有test文件夹,说明mysql正在使用新的根目录/home/mysql作为数据目录。

ls -l /home/mysql/test

在这里插入图片描述

以上确认均没问题,至此,本次mysql根目录迁移完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/592502.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET 两种开发模式

1》》WebForm 开发模式 1. 服务器端控件 2. 一般处理程序html静态页Ajax 3. 一般处理程序html模板 如下图 2》》MVC 太复杂的系统,会造成Controller 过复杂。 后来就诞生了 MVP、MVVM等模式

腾讯云CentOS7使用Docker安装ElasticSearch与Kibana详细教程

文章目录 一、安装ElasticSearch二、安装Kibana 一、安装ElasticSearch 使用Docker拉取ElasticSearch镜像 这里版本选择的是7.15.2 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.22. 查看ElasticSearch的镜像id docker images3. 创建ElasticSearch容器 …

目标跟踪—卡尔曼滤波

目标跟踪—卡尔曼滤波 卡尔曼滤波引入 滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。是根据观察某一随机过程的结果,对另一与之有关的随机过程进行估计的概率理论与方法。 历史上最早考虑的是维纳滤波,后来R.E.卡…

nn.GRU层输出:state与output的关系

在 GRU(Gated Recurrent Unit)中,output 和 state 都是由 GRU 层的循环计算产生的,它们之间有直接的关系。state 实际上是 output 中最后一个时间步的隐藏状态。 GRU 的基本公式 GRU 的核心计算包括更新门(update gat…

从零开始学AI绘画,万字Stable Diffusion终极教程(四)

【第4期】图生图 欢迎来到SD的终极教程,这是我们的第四节课 这套课程分为六节课,会系统性的介绍sd的全部功能,让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 在前面的课程中,我…

QT:QT窗口(一)

文章目录 菜单栏创建菜单栏在菜单栏中添加菜单创建菜单项添加分割线 工具栏创建工具栏设置停靠位置创建工具栏的同时指定停靠位置使用QToolBar类提供的setAllowedAreas函数来设置停靠位置 设置浮动属性设置移动属性 状态栏状态栏的创建在状态栏中显示实时消息在状态栏中显示永久…

数据结构-二叉树结尾+排序

一、二叉树结尾 1、如何判断一棵树是完全二叉树。 我们可以使用层序遍历的思路,利用一个队列,去完成层序遍历,但是这里会有些许的不同,我们需要让空也进队列。如果队列里到最后只剩下空那么这棵树就是完全二叉树。具体的实现如下…

工作问题记录React(持续更新中)

一、backdrop-filter:blur(20px); 毛玻璃效果,在安卓机上有兼容问题,添加兼容前缀也无效; 解决方案:让设计师调整渐变,不要使用该属性! 复制代码 background: radial-gradient(33% 33% at 100% 5%, #e9e5e5 0%, rgba…

本地部署大模型ollama+docker+open WebUI/Lobe Chat

文章目录 大模型工具Ollama下载安装运行Spring Ai 代码测试加依赖配置写代码 ollama的web&Desktop搭建部署Open WebUI有两种方式Docker DesktopDocker部署Open WebUIDocker部署Lobe Chat可以配置OpenAI的key也可以配置ollama 大模型的选择 本篇基于windows环境下配置 大模型…

线性数据结构-手写链表-LinkList

为什么需要手写实现数据结构? 其实技术的本身就是基础的积累和搭建的过程,基础扎实 地基平稳 万丈高楼才会久战不衰,做技术能一通百,百通千就不怕有再难得技术了。 一:链表的分类 主要有单向,双向和循环链表…

迎接AI时代:智能科技的社会责任与未来展望

AI智能体的社会角色、伦理挑战与可持续发展路径 引言: 在技术的浪潮中,AI智能体正逐步成为我们生活的一部分。它们在医疗、教育、交通等领域的应用,预示着一个全新的时代即将到来。本文将结合实际案例和数据分析,深入探讨AI智能体…

vue3--element-plus-抽屉文件上传和富文本编辑器

一、封装组件 article/components/ArticleEdit.vue <script setup> import { ref } from vue const visibleDrawer ref(false)const open (row) > {visibleDrawer.value trueconsole.log(row) }defineExpose({open }) </script><template><!-- 抽…

《MySQL45讲》读书笔记

重建表 alter table t engine InnoDB&#xff08;也就是recreate&#xff09;&#xff0c;而optimize table t 等于recreateanalyze&#xff0c;让表大小变小 重建表的执行流程 建立一个临时文件&#xff0c;扫描表 t 主键的所有数据页&#xff1b;用数据页中表 t 的记录生…

华为机考入门python3--(22)牛客22- 汽水瓶

分类&#xff1a;数字 知识点&#xff1a; 整除符号// 5//3 1 取余符号% 5%3 2 题目来自【牛客】 import sysdef calc_soda_bottles(n):if n 0: # 结束输入&#xff0c;不进行处理returnelse:# 循环进行汽水换算total_drunk 0 # 记录总共喝了多少瓶汽水while…

XSS注入漏洞解析(上)

XSS跨站脚本介绍 跨站脚本&#xff08;Cross-Site Scripting&#xff0c;XSS/CSS&#xff09;是一种经常出现在Web应用程序中的计算机安全漏洞&#xff0c;是 由于Web应用程序对用户的输入过滤不足而产生的。攻击者利用网站漏洞把恶意的脚本代码&#xff08;通常包括 HTML代码和…

深入浅出 BERT

Transformer 用于学习句子中的长距离依赖关系&#xff0c;同时执行序列到序列的建模。 它通过解决可变长度输入、并行化、梯度消失或爆炸、数据规模巨大等问题&#xff0c;比其他模型表现更好。使用的注意力机制是神经架构的一部分&#xff0c;使其能够动态突出显示输入数据的…

Meta Llama 3 使用 Hugging Face 和 PyTorch 优化 CPU 推理

原文地址&#xff1a;meta-llama-3-optimized-cpu-inference-with-hugging-face-and-pytorch 了解在 CPU 上部署 Meta* Llama 3 时如何减少模型延迟 2024 年 4 月 19 日 万众期待的 Meta 第三代 Llama 发布了&#xff0c;我想确保你知道如何以最佳方式部署这个最先进的&…

java基于云计算的SaaS医院his信息系统源码 HIS云平台源码

目录 云HIS功能模块 1、预约挂号&#xff1a; 2、药库管理&#xff1a; 3、门诊医生站&#xff1a; 4、门诊费用&#xff1a; 5、药房管理&#xff1a; 6、治疗室&#xff08;门诊护士工作站&#xff09;&#xff1a; 7、统计分析&#xff1a; 8、财务管理&#xff1a;…

vue快速入门(五十三)使用js进行路由跳转

注释很详细&#xff0c;直接上代码 上一篇 新增内容 几种常用的路由跳转方式演示 源码 App.vue <template><div id"app"><div class"nav"><!-- router-link 自带两个高亮样式类 router-link-exact-active和router-link-active区别&a…

《QT实用小工具·五十四》果冻弹出效果的动画按钮

1、概述 源码放在文章末尾 该项目实现动画按钮&#xff0c;鼠标放在按钮上可以弹性拉出的三个按钮&#xff0c;使用贝塞尔曲线实现&#xff0c;项目demo显示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #ifndef WATERCIRCLEBUTTON_H #define WATERCIRCLEBUTTON…
最新文章