mysql没有写入权限_解决Errcode: 13——mysql写文件权限问题

mysql没有写入权限_解决Errcode: 13——mysql写文件权限问题

一、问题

在数据库中select * into outfile ‘/home/mysql/data.sql‘,mysql又提示错误:ERROR 1 (HY000): Can‘t create/write to file ‘/home/mysql/data.sql‘ (Errcode: 13)

二、权限错误(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的权限,当然首先要保证该目录拥有读写权限。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值