2网站建设公司,北京WordPress爱好者,自己做一个app软件大概要多少钱,外贸网站有哪些平台mysql 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、初始化mysql前就手动指定mysql根目录为一个大的分区(支持动态扩容)#xff0c;事前就根本上解决mysql根目录空间不够问题3.1.0、方法思路3.1.1、卸载mariadb3.1.2、下载Mysql安装包3.1.3、安装Mysql 8.353… mysql 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、初始化mysql前就手动指定mysql根目录为一个大的分区(支持动态扩容)事前就根本上解决mysql根目录空间不够问题3.1.0、方法思路3.1.1、卸载mariadb3.1.2、下载Mysql安装包3.1.3、安装Mysql 8.353.1.4、初始化启动mysql 8.0.353.1.5、安装后配置 3.2、发现mysql根目录爆满了改变mysql根目录为一个大的分区(支持动态扩容)事后解决根目录空间不够问题(需要迁移之前的根目录数据到新的根目录)3.2.1、正常安装mysql后 mysql根目录是/var/lib/mysql3.2.1.1、卸载mariadb3.2.1.2、下载Mysql安装包3.2.1.3、安装Mysql 8.353.2.1.4、启动mysql 8.0.353.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.cnfdebian系是/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 mariadbrpm -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 NameSummarymysql-community-clientMySQL client applications and toolsmysql-community-client-pluginsShared plugins for MySQL client applicationsmysql-community-commonCommon files for server and client librariesmysql-community-develDevelopment header files and libraries for MySQL database client applicationsmysql-community-embedded-compatMySQL server as an embedded library with compatibility for applications using version 18 of the librarymysql-community-icu-data-filesMySQL packaging of ICU data files needed by MySQL regular expressionsmysql-community-libsShared libraries for MySQL database client applicationsmysql-community-libs-compatShared compatibility libraries for previous MySQL installations; only present if previous MySQL versions are supported by the platformmysql-community-serverDatabase server and related toolsmysql-community-server-debugDebug server and plugin binariesmysql-community-testTest suite for the MySQL servermysql-communityThe source code RPM looks similar to mysql-community-8.0.35-1.el7.src.rpm, depending on selected OSAdditional 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/mysqlmkdir 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 ResourcesLocationFiles or ResourcesLocationClient programs and scripts/usr/binmysqld server/usr/sbinConfiguration file/etc/my.cnfData directory/var/lib/mysqlError log fileFor RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.logValue of secure_file_priv/var/lib/mysql-filesSystem V init scriptFor RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqldSystemd serviceFor RHEL, Oracle Linux, CentOS or Fedora platforms: mysqldPid file/var/run/mysqld/mysqld.pidSocket/var/lib/mysql/mysql.sockKeyring directory/var/lib/mysql-keyringUnix manual pages/usr/share/manInclude (header) files/usr/include/mysqlLibraries/usr/lib64/mysqlMiscellaneous 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命令做下面这些事情
初始化mysql服务产生ssl证书和密钥在Mysql数据目录下validate_password默认安装。validate_password实现的默认密码策略要求密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符并且密码总长度至少为8个字符。已创建超级用户帐户“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.log4、启动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默认密码为Mysql123
mysql ALTER USER rootlocalhost IDENTIFIED BY Mysql123 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: 0mysql
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql
mysql ALTER USER root% IDENTIFIED WITH mysql_native_password BY Mysql123;
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 mariadbrpm -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 NameSummarymysql-community-clientMySQL client applications and toolsmysql-community-client-pluginsShared plugins for MySQL client applicationsmysql-community-commonCommon files for server and client librariesmysql-community-develDevelopment header files and libraries for MySQL database client applicationsmysql-community-embedded-compatMySQL server as an embedded library with compatibility for applications using version 18 of the librarymysql-community-icu-data-filesMySQL packaging of ICU data files needed by MySQL regular expressionsmysql-community-libsShared libraries for MySQL database client applicationsmysql-community-libs-compatShared compatibility libraries for previous MySQL installations; only present if previous MySQL versions are supported by the platformmysql-community-serverDatabase server and related toolsmysql-community-server-debugDebug server and plugin binariesmysql-community-testTest suite for the MySQL servermysql-communityThe source code RPM looks similar to mysql-community-8.0.35-1.el7.src.rpm, depending on selected OSAdditional 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/mysqlmkdir mysql-8.0.35-1.el8.x86_64.rpm-bundletar -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 ResourcesLocationFiles or ResourcesLocationClient programs and scripts/usr/binmysqld server/usr/sbinConfiguration file/etc/my.cnfData directory/var/lib/mysqlError log fileFor RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.logValue of secure_file_priv/var/lib/mysql-filesSystem V init scriptFor RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqldSystemd serviceFor RHEL, Oracle Linux, CentOS or Fedora platforms: mysqldPid file/var/run/mysqld/mysqld.pidSocket/var/lib/mysql/mysql.sockKeyring directory/var/lib/mysql-keyringUnix manual pages/usr/share/manInclude (header) files/usr/include/mysqlLibraries/usr/lib64/mysqlMiscellaneous 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命令做下面这些事情
初始化mysql服务 检查有没有mysql根目录存在如果没有mysql根目录存在则创建mysql根目录。然后在mysql根目录下创建mysql的系统数据库默认的系统数据库mysql、sys、performance_schema、information_schema。产生ssl证书和密钥在Mysql根目录下validate_password默认安装。validate_password实现的默认密码策略要求密码至少包含一个大写字母、一个小写字母、一位数字和一个特殊字符并且密码总长度至少为8个字符。已创建超级用户帐户“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,%prlZz2
grep temporary password /var/log/mysqld.log4、启动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.pid5、查看启动日志 下面是第一次启动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默认密码为Mysql123
mysql ALTER USER rootlocalhost IDENTIFIED BY Mysql123 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: 0mysql
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql
mysql ALTER USER root% IDENTIFIED WITH mysql_native_password BY Mysql123;
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_schemakgc;
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_schemakgc;
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根目录迁移完成。