MySQL INTO OUTFILE 报错 Failed to open stream: Permission denied

在使用mysql 8.0之后使用INTO OUTFILE导出下载数据库中的数据时,经常会出现这个报错:Failed to open stream: Permission denied

这主要是因为MySQL导出时,生成的默认文件权限为640导致,一方面如果导出的目录默认为www用户,然后我们PHP运行的用户也是www,会直接无法写入,为mysql用户的640权限的问题,这里直接给出具体的步骤

  • 修改导出目录默认为mysql用户组

  • 使用 $output = shell_exec("sudo chmod 777 $root_path/$file_name"); // 修改权限

  • 这里因为是www用户组运行的php,因此会导致sudo 无效,因此需要使用sudoers文件配置免密码sudo权限,具体步骤如下

  • 打开终端,并以root用户登录。

  • 执行visudo命令

  • 假设你要为用户www配置免密码sudo权限以执行chmod命令,添加如下行

www ALL=(ALL) NOPASSWD: /bin/chmod

这行的意思是用户www在任何主机上、以任何用户身份,可以免密码执行/bin/chmod命令。此时即可完成 INTO OUTFILE 并下载的权限准备了。这里使用NOPASSWD,可能会有安全隐患,如果有更好的方式,欢迎留言告知。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐大帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值