赞
踩
在数据库中select * into outfile ‘/home/mysql/data.sql‘,mysql又提示错误:ERROR 1 (HY000): Can‘t create/write to file ‘/home/mysql/data.sql‘ (Errcode: 13)
1)查看导出目录的权限 是否有mysql用户写的权限
2)如果有多级目录,要确保到处目录的上级目录有可执行权限,如果是/root目录 700要修改705 否则写不进
3)查看seLinux有没有关闭 ,如果没有关闭可以 setsebool -a 看看 然后 确保 setsebool -P mysqld_disable_trans=1
在red hat系列的linux中selinux对哪些daemon可以进行怎么样的操作是有限制的,mysql的select into outfile的命令是mysql的daemon来负责写文件操作的。写文件之前当然要具有写文件的权限。而selinux对这个权限做了限制。如果selinux是关闭的吧,这个命令执行是没有问题的
mysql> select user from user into outfile ‘/home/test.txt‘;
当时selinux开启时,selinux对mysql的守护进程mysqld进行了限制。
mysql> select user from user into outfile ‘/home/test.txt‘;
ERROR 1 (HY000): Can‘t create/write to file ‘/home/test.txt‘ (Errcode: 13)
出现了没有权限写的error,解决方法可以关闭selinux,可以在/etc/selinux中找到config,root用户修改selinux配置文件
shell>vi /etc/selinux/config
# 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 - SELinux is fully disabled.
SELINUX=enforcing
修改SELINUX=disabled关闭selinux就可以了,这个问题就可以解决了。不过全部关闭SELINUX有带来一些安全问题。当然也可以,单独给mysql的守护进程权限。
shell>getsebool -a
可以查看当前的对系统一系列守护进程的权限情况。
lpd_disable_trans --> off
mail_read_content --> off
mailman_mail_disable_trans --> off
mdadm_disable_trans --> off
mozilla_read_content --> off
mysqld_disable_trans --> off
nagios_disable_trans --> off
named_disable_trans --> off
named_write_master_zones --> off
nfs_export_all_ro --> on
nfs_export_all_rw --> on
nfsd_disable_trans --> off
nmbd_disable_trans --> off
nrpe_disable_trans --> off
shell>setsebool -P mysqld_disable_trans=1
mysql> select user from user into outfile ‘/home/test.txt‘;
开启对mysql守护进程的权限,这样写入到自定义的目录就没有问题了。
注意:
-P表示 是永久性设置,否则重启之后又恢复预设值。
getsebool setsebool命令在root用户下有权限。
除了对selinux的权限,当然首先要保证该目录拥有读写权限。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。