只是简单的outfile,直接到命令行测试。
命令行下:
select "dddd" into outfile '/var/www/data/suddytest.php';
事先确认过data目录为777权限。
结果报错如下:
ERROR 1 (HY000): Can't create/write to file '/var/www/data/suddytest.php' (Errcode: 13)
换成/tmp目录则可以写入。
一个比较奇怪的问题。改了data目录的属主之类的都没有任何错误变化。
最后,在log里面翻到了提示:
tail /var/log/message
Jul 30 20:12:02 prussian kernel: [25364.550264] audit(1217419922.112:4): type=1503 operation="inode_create" requested_mask="w::" denied_mask="w::" name="/var/www/data/suddytest.php" pid=4178 profile="/usr/sbin/mysqld" namespace="default"
查下资料原来是ubuntu的AppArmor搞的鬼,一个类似selinux的东东,限制了一些应用程序的访问权限。
/etc/init.d/apparmor stop
关掉后顺利写入
附:apparmor说明原文如下:
来自:http://forum.ubuntu.org.cn/post-453074.html
在 Ubuntu 中应用 AppArmor 应用程序访问控制系统 简单说明
windwiny.ubt#gmail.com 20071003
AppArmor 是一个类似于selinux 的东东,主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。。
1.安装 Ubuntu 7.10里
sudo apt-get install apparmor apparmor-profiles apparmor-docs apparmor-utils
2.启动服务
sudo /etc/init.d/apparmor restart
