修改Centos7上安装MariaDB数据库的存储位置

背景及唠叨:单位在15年年底购买了一台Fortigate的UTM(Fortigate 200D),本来就是冲着其有fortiguard以及FortiAnalyer,以为可以轻松加愉快地管理以及做网络情况的报告,谁知道一切都是要额外交钱的!!(NND那买你的设备还能干什么!)而且还死贵死贵(fortiguard一年大概要8K软妹币),幸苦,UTM上将日志发送去Syslog的功能还是不用收费的(吐槽一下,虽然说明文档上的截图上可以见到,在图形化界面上有这个功能,但是实际上是找不到的,要跑去命令行那才能实现,凸-_-凸)。无奈,唯有自己手工去收集处理数据。于是,自己搭服务器,自己写ETL,自己去弄JasperReport.....那么为什么要写这篇日志呢?就是因为在实际搭建服务器过程中,想将MariaDB(Mysql)的日志文件,放在服务器上另外挂载的一个大硬盘,经过百度,Mariadb官网,发现网络上普遍的教程都漏了最最重要的内容,于是就有了本文.

------------------------------------------------华丽的分割线--------------------------------------------------------------------

环境及准备:1.Centos 7(Centos 6也可)

                    2.MariaDB(Mysql)

                    3.semanage(Centos7如果最小安装的话,默认是没安装这个命令的,如果没有安装,请执行:

yum -y install policycoreutils-python

)

 

------------------------------------------------华丽的分割线 X2----------------------------------------------------------------

步骤: 1.确保MariaDB是关闭的,执行:

             (Centos7):systemctl stop mariadb.service     

             (Centos6):service mysql stop

             2.创建存放数据库文件的目录(举个栗子:/home/data),执行:

              mkdir /home/data

             3.MySQL的数据文档复制到新目录下,执行:
           cp -r /var/lib/mysql/* /home/data
/

             4.修改新目录的用户和用户组属性,执行:

                chown -R mysql:mysql /home/data/

            5.编辑mariadb的配置文档,加上新的配置。

             (在这里又得吐槽一下,网上的教程好像约好似的,都去修改/etc/my.cnf,但是在实际操作中,/etc/cnf内几乎没有内容,其inculd了目录/etc/my.cnf.d/下的所有文件,用意是将server,client等不同的配置分开,便于管理,我就不明白为什么都不去修改/etc/my.cnf.d/下的相应文件,虽然直接修改/etc/my.cnf效果都一样)

                      1).(CentOS7)修改/etc/my.cnf.d/client.cnf文件,在[client]下添加:

                                socket=/home/data/mysql/mysql.sock

                      2).(CentOS7)修改/etc/my.cnf.d/server.cnf文件,在[mysqld]下添加:

                                 socket=/home/report/data/mysql/mysql.sock

                                 datadir=/home/report/data

                  (Centos6下也差不多,好像都在/etc/my.cnf.d/server.cnf文件内,反正找回对应的标记,在下面添加相应的内容就好了)

             网络上的教程就到这里,然后就让你去开启mariaDB的服务,如果你尝试一下,就会发现根本开启不了,系统会报错,告诉你在/home/report/data下新建一个临时文件新建不了,/etc/my.cnf.d/server.cnf/下的

aria_log_control文件不存在,aria_log.00000001文件无法打开等等.....反正就是启动不了mariaDB服务,这是为什么呢?执行ls -Z查看新建目录与/var/lib/mysql两者的安全信息可以看到:

新目录:


 
 /var/lib/mysql


 
 两者的
 security context信息并不一致,这就是导致mariaDB服务无法启动的原因,所以要使用semanage去修改新目录的 security context

            6.修改新目录的 security context信息,执行:

                 semanage fcontext -a -t mysqld_db_t "/home/data(/.*)?"

            7.恢复目录 security context信息,执行:

                restorecon -R -v /home/data

            8.启动MariaDB服务,执行:

             (Centos7):systemctl start mariadb.service     

             (Centos6):service mysql start

完毕,搞掂收工!

 ------------------------------------------------华丽的分割线 X3----------------------------------------------------------------

 结束语及参考:要吐槽基本上在前面已经吐槽完毕,如果因为吐槽太多而导致你不想看这篇文章的话,建议直接去看RedHat的相关文章,我也是参考这编文章去解决问题的,传送门在下方:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/sect-Managing_Confined_Services-MariaDB-Configuration_Examples.html

你可能感兴趣的:(修改Centos7上安装MariaDB数据库的存储位置)