• mysql SELECT INTO OUTFILE ,can't create file (转)


    原文  http://blog.sina.com.cn/s/blog_6a5e34ad0100zfbi.html (转)

    命令行模式进入mysql

    #mysql -uroot -p12345

    #select * from test.test where id = 1 into outfile "/home/share_user/text.txt"; //运行时提示can't create file....

    #exit //退出mysql

    #sudo chmod 777 -R /home/share_user

    然后再次进行mysql,运行上面的命令,同样提示不能创建文件,

    原来是因为mysqld进程的权限问题, 

    下面开始修改:

    #sudo vim /etc/apparmor.d/usr.sbin.mysqld        //这个文件控制mysqld进程的权限,

    在文件中加入

    /home/share_user/ rw,   ####这行控制目录的权限
    /home/share_user/** rwk, ####这行控制目录下的所有文件的权限,应该是这样..........

    然后重启apparmor

    #sudo /etc/init.d/apparmor   restart

    然后再运行mysql ... into outfile ..命令 ,应该就不提示错误了.

    ----------------------以下是原文-----------------------

    很明显,这是由于权限问题导致的,最主要的问题是搞清楚权限是如何设置的。

    Ubuntu 使用 AppArmor 作为程序权限限制, Fedora 使用 selinux 作为程序权限限制.在linux中,以往的权限管理,是通过用户绑定的,现在还有一种权限机制,设置程序的访问权限,如:

    sudo mysqldump --T db;如果不起动程序权限管理,mysqldump获得root权限,可以在任何文件中进行操作。

    sudo mysqldump -T db;如果ubuntu中启用apparmor,即使是root权限,他也会根据程序的访问权限进行限定。

    所以我们可以将需要访问的目录添加到AppArmor的配置文件中:

    sudo gedit /etc/apparmor.d/usr.sbin.mysqld

    添加下面内容

    /data/* rw,

    然后,sudo /etc/init.d/apparmor restart

  • 相关阅读:
    Linux curl使用简单介绍
    SecureCRT编码转换vim
    BigTable/HBase基本概念解读 & Hbase shell常用命令
    Crontab用法说明(Linux)
    Sina SSO 登陆过程分析
    浅谈队列
    搞怪的 log4net 记录日志 性能测试
    iBatis.Net异步多线程 操作Ibatis报错
    高并发高负载的大型网站系统架构
    [置顶] IIs Web 站点安全 监控 站点自动部署 重启
  • 原文地址:https://www.cnblogs.com/flex_fly/p/3532167.html
Copyright © 2020-2023  润新知