我想将我的数据库放在另一个目录中,所以我可以将它们与我的Web应用程序和其他持久数据一起存储在ESB(弹性块存储,只是虚拟硬盘的一个奇特名称)中。
我试图通过http://crashmag.net/change-the-default-mysql-data-directory-with-selinux-enabled上的教程。
一切似乎很好,直到我input此命令:
# semanage fcontext -a -t mysqld_db_t "/srv/mysql(/.*)?"
然后命令失败,告诉我mysqld_db_t是一个无效的SELinux上下文,即使默认的MySQL数据目录被标记了这个上下文。 我在Virtualbox上运行Fedora 15(performance得像普通的x86兼容盒子)和Amazon EC2(基于Xen),所以教程应该兼容。
另外值得一提的是,全局closuresSELinux或仅仅closuresMySQL进程不是一个select,因为如果黑客通过MySQL服务器访问系统,这样的解决scheme会降低系统的安全性。 在更改到Redhat / Fedora体系结构之前,我从来没有见过这个问题,所以它可能是一个特定于分发的问题。
任何帮助,高度赞赏
你有没有尝试指定完整的上下文名称,而不是只是* _t部分?
是否有一些原因,为什么你不能在/ var / lib / mysql下挂载你的块设备,这样你就不需要更新标签了? 也许使用绑定挂载或符号链接? 例如mount -o bind / srv / mysql / var / lib / mysql。
我试图再现这种行为,并没有能够,这是我所做的。
$ sudo semanage fcontext -a -t mysqld_db_t "/mnt/foo(/.*)?" $ sudo restorecon -R /mnt/foo $ ls -Z /mnt/foo/ drwxr-xr-x. root root system_u:object_r:mysqld_db_t:s0 bar drwxr-xr-x. root root system_u:object_r:mysqld_db_t:s0 baz -rw-r--r--. root root system_u:object_r:mysqld_db_t:s0 quux