SELinux and MySQL

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

《SELinux and MySQL》有6个想法

  1. chcon -R -t httpd_sys_content_t /data/dummy/
    http 莫名其妙的没有访问权限的话。也许需要执行这个。

  2. 如果按正常的方式添加mod_jk后无法启动err=13的话,试试:
    JkShmFile run/jk.shm
    就是把shared memory放到run目录下。

  3. Can’t connect to MySQL server on ‘XXX’ (13)
    SELinux不允许http访问数据库,解决方案如下:
    setsebool -P httpd_can_network_connect_db on

  4. 如果某个目录需要http写入,那么应该这么操作:
    chcon -R -t httpd_sys_rw_content_t /var/www/somedir

评论已关闭。