mysql 指定根目录 迁移根目录

news2024/11/19 21:18:45

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参数了。
如果报错/var/lib/mysql/mysql.sock 那就删除掉/var/lib/mysql/mysql.sock 再创建软连接。

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

在这里插入图片描述

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

安装完成如图所示

在这里插入图片描述

安装完成后 会形成以下文件和目录

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.

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

1、Client programs and scripts

在这里插入图片描述

2、mysqld server

在这里插入图片描述

3、Configuration file

在这里插入图片描述

4、Data directory

在这里插入图片描述

在这里插入图片描述

5、Error log file

在这里插入图片描述

6、Value of secure_file_priv

在这里插入图片描述

7、System V init script

在这里插入图片描述

8、Systemd service

在这里插入图片描述

9、Pid file

在这里插入图片描述

10、Socket

在这里插入图片描述

11、Keyring directory

在这里插入图片描述

12、Unix manual pages

/usr/share/man

13、Include (header) files

在这里插入图片描述

14、Libraries

在这里插入图片描述

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

在这里插入图片描述

3.2.1.4、启动mysql 8.0.35

安装后默认不会启动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前是空的

在这里插入图片描述

2、证书在数据目录下

在这里插入图片描述

3、查看 超级用户帐户“root”@“localhost” 的默认密码 Is#:wl:q5>oy

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

5、查看启动日志

在这里插入图片描述

3.2.1.5、安装后配置

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

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

mysql -uroot -p

没修改默认密码前不能进行数据库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数据库

在这里插入图片描述

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

3.2.2.1、创建mysql数据

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

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

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

在这里插入图片描述

这次新安装的mysql容器数据库如下

在这里插入图片描述

直接从其他数据库中备份的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容器中mysql根目录占用空间 占用从213M增加到了352M。这是因为恢复的数据库表占用了空间。

在这里插入图片描述

mysql容器操作系统根目录占用空间从2.4G增大到了2.6G。

在这里插入图片描述

在这里插入图片描述

mysql数据量占用的增大,就是mysql根目录的增大,从1.7G增大到了1.9G。

在这里插入图片描述

在这里插入图片描述

很快随着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配置文件/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 -uroot -p -S /home/mysql/mysql.sock

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

3.2.4.1、迁移mysql根目录后,检查mysql启动日志是否正常
cat /var/log/mysqld.log
3.2.4.2、执行mysql服务检测,确认mysql服务的接口调用是否正常

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

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

在这里插入图片描述

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

手把手教你安装 Garnet

什么是 Garnet Garnet 是微软使用 C# 编写的 Redis 客户端兼容缓存组件,你可以使用 Redis 客户端的连接方式来连接 Garnet 但是 Garnet 需要 .NET8 运行环境才可以使用,为了便捷性,可以考虑构建成 Docker 镜像 裸机部署 首先,…

初始数据类型

注释补充 在我们编写任何代码的时候,都有一个叫做注释的功能 在golang中有两种 单行注释 // 如下图所示 加入了注释的话,代码在执行的时候会自动忽视这段内容 //fmt.Println("天上") //fmt.Println("天下") //fmt.Println("唯…

Web端重叠路径可视化

近几年来,由于信息技术的发展,大数据成为了这个时代的代名词之一,“数据可视化”风靡一时。得益于HTML5提供的新标签“canvas”,Web端也能分“数据可视化”一杯羹。 随着越来越多的可视化方案和需求,需要解决问题也越来…

Java中接口的默认方法

为什么要使用默认方法 当我们把一个程序的接口写完后 用其他的类去实现,此时如果程序需要再添加一个抽象方法的时候我们只有两种选择 将抽象方法写在原本的接口中 但是这样写会导致其他所有改接口的实现类都需要实现这个抽象方法比较麻烦 写另一个接口 让需要的实…

Sqli-labs第一关到第四关

目录 一,了解PHP源代码 二,破解第一关 2.1在了解完源码之后,我们重点看一下 2.2破解这道题表中有几列 2.3查看表中哪一列有回显 2.4查询库,表,列信息 三,总结 前提: 之所以把1234关…

2024年5月5日 十二生肖 今日运势

小运播报:2024年5月5日,星期日,农历三月廿七 (甲辰年己巳月己巳日),法定节假日。 红榜生肖:牛、猴、鸡 需要注意:鼠、虎、猪 喜神方位:东北方 财神方位:正…

eSIM IoT vs M2M vs Consumer

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题,欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 截至2023年5月,全球移动通信系统协会(GSMA)发布了三个关键的eSIM技术规范,这些规…

2000-2020年县域创业活跃度数据

2000-2020年县域创业活跃度数据 1、时间:2000-2020年 2、指标:地区名称、年份、行政区划代码、经度、纬度、所属城市、所属省份、年末总人口万人、户籍人口数万人、当年企业注册数目、县域创业活跃度1、县域创业活跃度2、县域创业活跃3 3、来源&#…

【前端项目——分页器】手写分页器实现(JS / React)

组件介绍 用了两种方式实现,注释详细~ 可能代码写的不够简洁,见谅🙁 1. 包含内容显示的分页器 网上看了很多实现,很多只有分页器部分,没和内容显示联动。 因此我增加了模拟content的显示,这里模拟了32条数…

JavaEE初阶Day 15:文件IO(1)

目录 Day 15:文件IO(1)IO文件1. 路径2. 文件的分类3. 使用Java针对文件系统进行操作3.1 属性3.2 构造方法3.3 方法 Day 15:文件IO(1) IO I:Input输入 O:Output输出 输入输出规则…

使用机器学习确定文本的编程语言

导入必要的库 norman Python 语句&#xff1a;import <span style"color:#000000"><span style"background-color:#fbedbb"><span style"color:#0000ff">import</span> pandas <span style"color:#0000ff&quo…

onedrive下載zip檔案有20G限制,如何解決

一般來說&#xff0c;OneDrive網頁版對文件下載大小的限制如下圖所示&#xff0c;更多資訊&#xff0c;請您參考這篇文章&#xff1a;OneDrive 和 SharePoint 中的限制 - Microsoft Support 因此我們推薦您使用OneDrive同步用戶端來同步到本地電腦&#xff0c;您也可以選擇只同…

【实验】使用docker-compose编排lnmp(dockerfile) 完成Wordpress 部署

环境准备 docker&#xff1a;192.168.67.30 虚拟机&#xff1a;4核4G 关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 安装docker 直接点击【复制】粘贴到xshell中即可&#xff0c; 执行过程中若出现睡眠(sleep)通过 kill -9 pid号 &#x…

库存管理系统开源啦

软件介绍 ModernWMS是一个针对小型物流仓储供应链流程的开源库存管理系统。该系统的开发初衷是为了满足中小型企业在有限IT预算下对仓储管理的需求。通过总结多年ERP系统研发经验&#xff0c;项目团队开发了这套适用于中小型企业的系统&#xff0c;以帮助那些有特定需求的用户。…

vector的使用

1.构造函数 void test_vector1() {vector<int> v; //无参的构造函数vector<int> v2(10, 0);//n个value构造&#xff0c;初始化为10个0vector<int> v3(v2.begin(), v2.end());//迭代器区间初始化,可以用其他容器的区间初始化vector<int> v4(v3); //拷贝…

【 书生·浦语大模型实战营】作业(六):Lagent AgentLego 智能体应用搭建

【 书生浦语大模型实战营】作业&#xff08;六&#xff09;&#xff1a;Lagent & AgentLego 智能体应用搭建 &#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方…

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘ 原因是notebook新版本没有notebook.auth 直接输入以下命令即可设置密码 jupyter notebook password

链表的带环问题 链表的深度拷贝

1.1. 链表是否带环 代码很简单&#xff0c;最主要就是如何证明 首先判断链表是否带环&#xff0c;可以定义两个指针&#xff0c;一个快指针一个慢指针。快指针走两步&#xff0c;慢指针走一步一定会相遇吗&#xff1f;有没有可能会超过&#xff1f;假设进环的时候fast和slow的…

87、动态规划-最长地址子序列

思路&#xff1a; 使用递归来理解题目&#xff0c;然后在看如何优化&#xff0c;假设我当前使用元素那么最长是多少&#xff0c;如果不使用当前元素最长是多少&#xff0c;然后取最大值。 代码如下&#xff1a; //算出最长递增子序列的长度public static int lengthOfLIS02(…