https://blogs.oracle.com/jsmyth/entry/selinux_and_mysql
有时候因为SELinux的原因导致程序不能正常运行,最简单粗暴的方式就是关闭它。实际上存在即合理,内置这个安全引擎是有道理的,可以用SELinux的方式来解决这些问题。MySQL改了端口号或者数据文件地址,无法正常启动。下面是具体的操作方法:
比如端口号改为3307了,可以这么设置:
[root@boxy ~]# semanage port -a -t mysqld_port_t -p tcp 3307
semanage工具可以变更很多SELinux设置。这里,我们为使3307端口使用TCP作为它的协议(-p tcp)而向端口映射增加了(-a)一种类型(-t mysqld_port_t)。当MySQL(通过mysqld_safe进程)试图访问这个端口时,SELinux从策略(译注:policy)里面识别这个端口匹配一种类型,并且允许进行这样的访问。
另外一个例子:数据文件夹改变为/data/mysql
[root@boxy ~]# semanage fcontext -a -t mysqld_db_t “/data/mysql(/.*)?”
[root@boxy ~]# restorecon -Rv /data/mysql
chcon -R -t httpd_sys_content_t /data/dummy/
http 莫名其妙的没有访问权限的话。也许需要执行这个。
如果按正常的方式添加mod_jk后无法启动err=13的话,试试:
JkShmFile run/jk.shm
就是把shared memory放到run目录下。
Can’t connect to MySQL server on ‘XXX’ (13)
SELinux不允许http访问数据库,解决方案如下:
setsebool -P httpd_can_network_connect_db on
如果某个目录需要http写入,那么应该这么操作:
chcon -R -t httpd_sys_rw_content_t /var/www/somedir
增加非默认目录的访问权限:
chcon -R -t httpd_sys_content_t /asdf/sdff
自定义的输出(如slow-query)文件也需要在授权的文件夹下。