问题:
当尝试使用SELECT INTO OUTFILE将表数据导出到服务器默认目录之外的CSV文件时,即使调整了权限和所有权,仍然会遇到Errcode 13(权限错误)。这在Ubuntu系统上,尤其是在运行AppArmor的系统上经常出现。
解决方案:
1. 检查AppArmor状态:
执行sudo aa-status
命令来验证mysqld是否处于强制模式。如果它出现在列表中,AppArmor很可能阻止写入操作。
2. 编辑AppArmor配置文件:
打开/etc/apparmor.d/usr.sbin.mysqld
文件,并在文件底部添加所需的目录路径,确保具有读/写权限。例如:
<code>/usr/sbin/mysqld { ... **/data/ r, /data/* rw,** }</code>
3. 重新加载AppArmor配置文件:
执行sudo /etc/init.d/apparmor reload
命令来应用更改。
4. 重新尝试查询:
重新加载AppArmor配置文件后,再次尝试SELECT INTO OUTFILE查询。MySQL现在应该能够写入到目标目录。
警告:
注意将MySQL写入权限授予其默认位置之外的目录的安全性隐患。确保已采取适当措施来保护敏感数据。
以上是如何使用 SELECT INTO OUTFILE 修复 MySQL Errcode 13(权限错误)?的详细内容。更多信息请关注PHP中文网其他相关文章!