停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED
新的datadir路径确实没问题,而且目录和目录下所有文件都是777权限,上层目录也有root权限,只不过datadir和下属文件owner都是root,查看selinux配置,设置为permissive模式之后正常启动mysqld。
[root@data selinux]# getenforce
Enforcing
[root@data selinux]# setenforce 0
[root@data selinux]# getenforce
Permissive
关于如何永久禁用selinux:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
彻底关闭,vi /etc/selinux/config 修改 SELINUX=disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
然后reboot重启虚拟机即可永久关闭selinux
查看启动日志后出现apparmor=“DENIED“ operation=“exec“之类的错误
修改完数据库的数据存储目录后无法启动mysql
#查看日志 journalctl -xe
#报错详情
Mar 04 14:43:17 ubuntu audit[5657]: AVC apparmor="DENIED" 。。。等等
修改配置文件:/etc/apparmor.d/usr.sbin.mysqld
在该文件下修改或新增两条记录,从而使mysqld可以使用/mysql_data/mysql这个目录
/mysql_data/mysql/ r,
/mysql_data/mysql/** rwk,
然后重启AppArmor服务后,然后就可以重启MySQL服务了。
sudo service apparmor restart
当然/etc/apparmor.d/usr.sbin.mysqld还有Allow plugin access需要调整,这个不是重点,在此略过。