背景及唠叨:单位在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